2010-11-27 81 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定时器将尝试量化帧速率。

相关问题