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

When Does NSTimer Fire If Main Thread Is Busy?

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

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

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

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

NSTimer 在当前 运行 循环(即本例中的主 运行 循环)上安排定时器,因此如果主线程忙,定时器将不会触发直到你回到主 运行 循环。

有关详细信息,请参阅 Timer Programming Topics and the NSTimer Class Reference