2014-02-10 3 views
0

나는 거기에 간단한 싱글 및 실행 방법 작성 :Mac OS, 콘솔 응용 프로그램. performSelector : withObject : afterDelay : 작동하지 않습니까?

- (void)run { 

    static int times = 0; 
    NSLog(@"times = %d", times++); 

    [self performSelector:@selector(run) withObject:nil afterDelay:MIN_DELAY]; 
} 

를하지만 제대로 작동하지 않습니다. 한 번만 실행됩니다.

그러나 performSelector:withObject:afterDelay:performSelector:으로 바꾼다면 많은 시간이 걸릴 것입니다. (하지만 통화 사이에는 지연이 필요합니다).

performSelector:withObject:afterDelay: 메서드가 작동하지 않습니까? 그리고이 방법을 전혀 사용할 수 있습니까?

답변

3

-performSelector:withObject:afterDelay:으로 전화하면 실행 루프가 필요합니다. 콘솔 응용 프로그램은 기본적으로 제어를 실행 루프에 전달하지 않습니다. 자세한 정보는 NSRunLoop을 검색하십시오. 워드 프로세서

3

:

이 방법은 현재의 콘텍스트의 runloop에 등록하고, 그 runloop에 따라 올바르게 수행하기 위해 정기적으로 실행된다.

런 루프가 없습니다. 실제로,이 방법은 올바르게 작동하지 않습니다.

(작성 및 runloop을 시작하면 결코 호출되지 UIApplicationMain를 호출하면 않는다는 것을, 그러나 코스의 것들 중 하나입니다.)