2015-10-20 27 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,以獲取更多信息。