2014-02-10 76 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:替換performSelector:withObject:afterDelay:,那麼它將被調用很多次(但我需要在兩次調用之間延遲)。

那麼爲什麼方法performSelector:withObject:afterDelay:不起作用?我可以使用這種方法嗎?

回答

3

調用-performSelector:withObject:afterDelay:需要一個運行循環。默認情況下,控制檯應用程序不會將控制權交給運行循環。有關更多信息,請搜索NSRunLoop。

3

從文檔:

這種方法具有其當前上下文的寄存器runloop,以及取決於runloop被定期運行,以正確地執行。

您沒有runloop。 Ipso事實上,這種方法不能正確執行。

(創建和啓動runloop是的東西,叫UIApplicationMain呢,當然你永遠不會叫它之一。)

相關問題