如果主线程忙,NSTimer何时触发?

时间:2015-10-20 15:15:26

标签: objective-c nstimer nsrunloop

如果主线程忙,NSTimer何时触发?以下是有问题的代码行:

[NSTimer scheduledTimerWithTimeInterval:10.0
                                 target:self
                               selector:@selector(onTimer:)
                               userInfo:nil
                                repeats:YES];

我对NSTimer有点新手(并运行循环和线程),谢谢你的帮助。我的应用程序刷新了主线程上安排的NSTimer。如果刷新计时器在指定的确切时间间隔触发并且不等待主线程释放,则可能会出现问题。

一个示例是,如果用户在链接到数据的屏幕上执行某些操作,然后刷新后立即触发并更改该数据,从而导致应用程序崩溃。这可能会发生,还是在主线程上解析用户操作之前刷新不会触发?

1 个答案:

答案 0 :(得分:1)

NSTimer在当前运行循环(即本例中的主运行循环)上调度计时器,因此如果主线程忙,则计时器不会触发,直到您回到主运行循环。

有关详细信息,请参阅Timer Programming TopicsNSTimer Class Reference