iOS 에서 스 레 드 를 만 드 는 방법 은 계속 작업 할 수 있 고 한 번 실행 하지 않 으 면 끝 납 니 다.

2524 단어 iOS_OC
http://blog.csdn.net/hu_songsong/article/details/12845391
http://www.dreamingwish.com/frontui/article/default/ios-multithread-program-runloop-the.html
어떻게 스 레 드 를 만 드 는 지, 계속 일 할 수 있 도록 요구 하 며, 한 번 실행 하지 않 고 끝 납 니 다.
@synthesize name;
- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(threadFunc) object:nil];
    [thread start];
}
static bool over = NO;
- (void)threadFunc
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
    while (YES) {
        @synchronized(name){
            name = @"Frank";
            [NSThread sleepForTimeInterval:2];
            if ([NSThread isMultiThreaded]) {
                NSLog(@"%@ isMultiThreaded",name);
            }
            if (over) {
                break;
            }
        }
    }
    [pool release];
}

이 스 레 드 종료:
    a)break;
    b)[thread cancel]
NSRunloop
run loop 은 이벤트 처리 순환 으로 끊임없이 할당 작업 과 입력 이 벤트 를 처리 합 니 다.run loop 을 사용 하 는 목적 은 스 레 드 를 일 할 때 일 하고 없 을 때 휴면 시 키 는 것 입 니 다.NSRunloop 은 하나의 스 레 드 가 활성 화 된 상 태 를 유지 할 수 있 으 며 즉시 소각 되 지 않 습 니 다.
다 중 스 레 드 에서 타 이 머 를 사용 하려 면 Runloop 을 켜 야 합 니 다. Runloop 을 켜 서 스 레 드 를 활성화 상태 로 유지 해 야 타이머 가 정상적으로 작 동 할 수 있 기 때 문 입 니 다.
- (void)viewDidLoad
{
    [super viewDidLoad];
    //self.view.backgroundColor=[UIColor blueColor];
    [self performSelectorInBackground:@selector(multithread) withObject:nil];
}

-(void)multithread
{
    NSLog(@"HE");
    [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(timeAction) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop]run];
}
-(void)timeAction
{
    NSLog(@"HELLO");
}

1.3.4    Run Loop 종료
run loop 이 사건 을 처리 하기 전에 종료 할 수 있 는 두 가지 방법 이 있 습 니 다.
run loop 에 시간 초과 설정 run loop 정지 알림 설정 이 가능 하 다 면 첫 번 째 방법 을 추천 합 니 다.run loop 이 종료 되 기 전에 모든 정상 적 인 작업 을 수행 할 수 있 는 시간 초과 시간 을 지정 합 니 다. run loop 관찰자 에 게 메 시 지 를 보 내 는 것 을 포함 합 니 다.
CFRunLoop Stop 을 사용 하여 run loop 을 표시 하 는 것 은 시간 초과 사용 으로 인 한 결과 와 비슷 합 니 다.Run loop 은 남 은 모든 알림 을 보 내 고 종료 합 니 다.시간 초과 설정 과 달리 무조건 시작 하 는 run loop 에서 이 기술 을 사용 할 수 있 습 니 다.
run loop 의 입력 원 과 타 이 머 를 제거 하 는 것 도 run loop 을 종료 시 킬 수 있 지만, 이것 은 run loop 을 종료 하 는 믿 을 만 한 방법 이 아 닙 니 다.일부 시스템 루틴 은 필요 한 이 벤트 를 처리 하기 위해 run loop 에 입력 원 을 추가 합 니 다.코드 가 이러한 입력 원 을 고려 하지 않 기 때문에 시스템 루틴 에서 제거 하지 않 고 run loop 을 종료 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기