我有一个NSTimer(在主线程上运行)应该每0.02秒关闭一次。但是,我注意到随着内存使用开始上升(应用程序捕获每个tick的帧并存储在一个数组中),后续滴答开始需要0.02s以上。
我该如何解决这个问题?我开始认为NSTimer不适合这样的高频任务。
答案 0 :(得分:10)
作为docs州,
计时器不是实时机制;它只在其中一个发射时发射 已添加计时器的运行循环模式正在运行且能够运行 检查计时器的开火时间是否已经过去。因为各种各样 输入源一个典型的运行循环管理,有效的分辨率 计时器的时间间隔限制在50-100的量级 毫秒。
由于100毫秒= .1秒并且您的计时器应该每0.02秒运行一次,因此您的计时器计划远远短于计时器的有效分辨率,因此您的计时器很容易失去同步。