有人可以向我解释一下 NSTimer 的行为到底是怎样的吗?
基本上我想知道是否有办法让 NSTimer 事件始终发生。如果当前正在执行某些操作,则发生事件。
例如,在:
NSTimer* testTimer = [NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(testMethod) userInfo:nil repeats: NO];
for (int i=0; i<9999; i++) {
NSLog(@"%i", i);
}
testMethod 永远不会被执行,因为事件触发时正在执行 for 循环。
最佳答案
当计时器触发时,它的选择器将被添加到运行循环中以尽快执行。
但是,您正在创建一个循环,因此运行循环永远不会进行更改来执行计时器的选择器,从而导致您所看到的结果 - 应用程序会等待循环完成,然后再运行计时器的选择器。
如果您有一个长时间运行的任务,最好将其放入一个新线程 - 尝试查看 performSelectorInBackground并阅读 Objective-c 中的线程。
关于iphone - NSTimer 选择器调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3448016/