我在其中创建了一个简单的单例和运行方法:
- (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:
不起作用?我可以使用这种方法吗?
答案 0 :(得分:3)
对-performSelector:withObject:afterDelay:
的调用需要运行循环。默认情况下,控制台应用程序不会将控制权传递给运行循环。有关详细信息,请搜索NSRunLoop。
答案 1 :(得分:3)
来自文档:
此方法向其当前上下文的runloop注册,并依赖于定期运行的runloop以正确执行。
你没有runloop。事实上,这种方法对你来说效果不正确。
(创建和启动runloop是调用UIApplicationMain
所做的事情之一,但当然你永远不会调用它。)