안드로이드와 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);
'Programming > Mac & iOS' 카테고리의 다른 글
[Swift] Swift Study 2주차 요약 (Closure, Collection, Property, Initialization, Observer ... etc) (0) | 2014.08.18 |
---|---|
[Swift] Swift Study 1주차 요약 (Alias, Tuple, Optional, Range operator ... etc) (0) | 2014.08.16 |
[iOS] 멀티코어 개발자를 위한 애플의 선물 GCD – Grand Central Dispatch (0) | 2014.02.01 |
[Objective C] Notification 사용하기 (0) | 2013.08.25 |
[Objective C] iOS에서 진동 구현 (0) | 2013.05.20 |