objective-c - NSTimer越来越落后

时间:2015-02-07 20:51:35

标签: ios objective-c macos

我有一个NSTimer(在主线程上运行)应该每0.02秒关闭一次。但是,我注意到随着内存使用开始上升(应用程序捕获每个tick的帧并存储在一个数组中),后续滴答开始需要0.02s以上。

我该如何解决这个问题?我开始认为NSTimer不适合这样的高频任务。

1 个答案:

答案 0 :(得分:10)

作为docs州,

  

计时器不是实时机制;它只在其中一个发射时发射   已添加计时器的运行循环模式正在运行且能够运行   检查计时器的开火时间是否已经过去。因为各种各样   输入源一个典型的运行循环管理,有效的分辨率   计时器的时间间隔限制在50-100的量级   毫秒。

由于100毫秒= .1秒并且您的计时器应该每0.02秒运行一次,因此您的计时器计划远远短于计时器的有效分辨率,因此您的计时器很容易失去同步。