2015-10-20 28 views
0

如果主线程忙,NSTimer何时启动?下面是代码有问题的行:如果主线程繁忙,NSTimer何时启动?

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

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

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

+0

也许看看[容忍](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/#//apple_ref/occ/instp/NSTimer/tolerance )? (不知道它会帮助,只是我的意见)。 – kientux

+0

@ kientux - 不,这是一个完全不同的问题。 – Rob

+0

@Rob谢谢你! – Alex

回答

1

NSTimer在当前运行循环(即本例中的主运行循环)上调度定时器,所以如果主线程繁忙,定时器将不会触发,直到返回到主运行循环。

请参阅Timer Programming TopicsNSTimer Class Reference,以获取更多信息。