본문 바로가기
Mobile Programming/iOS

NSThread 사용하기

by 학수씨 2016. 4. 21.

NSThread *thTime;

thTime = [[NSThread alloc] initWithTarget:self selector:@selector(_th) object:nil];

[thTime start];

    

    

[thTime release];






- (void)_th {

    

    // 스레드안에서의 처리들은 지역 오토릴리즈를 해야 한다.

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    while([[NSThread currentThread] isCancelled] == NO)    // 현재 스레드를 반환하고 상태를 체크

    {

        NSLog(@"th 222");

        NSString *t = [NSString stringWithFormat:@"%i", 1];

        

        // 표현에 관계된 것들은 메인스레드로 보내자.

        [self performSelectorOnMainThread:@selector(mainThreadSetText:) withObject:t waitUntilDone:YES];

        [NSThread sleepForTimeInterval:0.1];       // 스레드에 대한 sleep 기능의 함수

    }

    [pool release];

}



- (void) mainThreadSetText:(NSString*)text

{

    NSLog(@"mainThreadSetText");

    //lbText.text = text;

}




- (void) _stop

{

    [thTime cancel];

    // cancel, 한번 스레드가 끝난 객체 isFinished YES 객체는 다시 실핼할 없다. 다시하고 싶은경우는 해제후 새로 만들어야함.

}




release is unavailable not available in automatic reference counting mode  에러 발생시..


해결 방법 : Apple LLVM 6.1 - Language - Objective C 에서 Objective-C Automatic Reference Counting Yes -> No


댓글