2014-02-10 77 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呢,当然你永远不会叫它之一。)

相关问题