NSTimer选择器调用

时间:2010-08-10 10:33:58

标签: iphone objective-c cocoa nstimer

有人可以向我解释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循环。

1 个答案:

答案 0 :(得分:2)

当计时器触发时,它的选择器被添加到运行循环中以便尽快执行。

然而,你正在创建一个循环,所以运行循环永远不会得到更改来执行计时器的选择器导致你看到的东西 - 应用程序在运行你的计时器的选择器之前等待循环完成。

如果你有一个长期运行的任务,最好将它放入一个新的线程 - 尝试查看performSelectorInBackground并阅读objective-c中的线程。