2010-11-27 30 views
2

什麼是最快的我可以運行一個NSTimer,並仍然得到可靠的結果?我已經讀到接近30ms它開始變得無用,所以它開始變得無用「...... 40ms? 50ms的?我應該運行NSTimer的最快速度是什麼?

+0

應該避免快速運行,重複,定時器;他們傾向於消耗電池並使應用程序無響應。 – bbum 2010-11-27 02:30:06

+0

可能重複[在高頻率下使用NSTimer?](http://stackoverflow.com/questions/4289588/using-an-nstimer-at-high-frequencys) – 2010-12-05 21:17:37

回答

4

the docs

的時間間隔 爲定時器的有效分辨率僅限於 的50-100毫秒

秩序聽起來像是如果你想要安全,你不應該在0.1秒以內使用定時器。但爲什麼不在自己的應用程序中嘗試它,看看你可以走多低?

你不會在這裏找到保證。 NSTimers本質上是機會主義的,因爲它們與事件循環一起運行,除了Cocoa定時器調度機制的限制之外,它們的有效最細粒度將取決於應用程序中發生的所有其他事件。

1

取決於你試圖完成什麼樣的結果。 NSTimer Class0.5 - 1.0是開始獲得可靠結果的好地方。

2

你對可靠性的定義是什麼? 1秒計時器中的16 mS錯誤低於2%錯誤,但30 mS計時器錯誤超過50%。

NSTimers將等待當前運行循環中發生的任何事情完成,並且可以積累任何時間錯誤。例如如果您觸摸顯示N次,所有後續的重複NSTimer啓動可能會延遲0到N個觸摸處理程序所花費的累積時間(加上在「錯誤」時間運行的其他任何內容)。等等。

假設沒有一組前景任務需要的時間長於幀時間,CADisplayLink定時器將嘗試量化幀速率。

相關問題