Programming/Mac & iOS

[Objective C] Thread 사용하기

MB Brad KWON 2013. 5. 20. 15:01

안드로이드와 iOS의 스레드 사용법은 완전히 다르다.


NSThread *t1 = [[NSThread alloc] initWithTarget:self selector:@selector(threadFunc:) object:nil];

[t1 start];


 위와 같이 스레드를 생성해서 이용하면 된다. threadFunc로 스레드의 역할을 정의해주면 된다. 자바의 Thread의 run()이라고 생각하면 이해가 쉽다. 스레드를 종료시킬 때는 스레드를 강재로 죽이는 것보다는 스레드의 실행단위가 완료될 수 있도록 간접적으로 죽이는 방법이 전반적으로 선호된다. 특히 iOS는 시스템의 안전성을 위해서 간접적으로 죽이는 방법만 허용한다.


[t1 cancel];


 cancel을 사용하여 내부의 flag 값을 바꾸어 종료 시키는 방법만 허용 시킨다. 단, threadFunc 내부에서 밑에와 같은 스레드의 종료를 확인하는 명령어 한 줄을 추가 해준다.


if([[NSThread currentThread] isCancelled]  == YES);