斯威夫特:有最大的计时器速度吗?

时间:2019-04-14 01:16:31

标签: swift timer

对于我的问题,我是从Apple Documentation引用Swift中的Timer

Timer.scheduledTimer(timeInterval ti: TimeInterval, 
                     target aTarget: Any, 
                     selector aSelector: Selector, 
                     userInfo: Any?, 
                     repeats yesOrNo: Bool) -> Timer

我的问题是关于timeInterval参数:计时器速度将保持恒定时,是否存在大于0的十进制值?我问是因为经过一些测试,使用0.000010.00000001的间隔似乎并没有产生任何明显的差异。在文档或Google reasearch中都没有找到答案。

1 个答案:

答案 0 :(得分:2)

在iOS中,NSTimer在主线程的运行循环中被调用,因此可以可靠地调用它的最大速率通常为每秒30到60次(在更新的版本中可能高达每秒120次) iPad Pro),与显示帧频有关。因此,最短的可靠时间间隔通常在8到33.3毫秒的范围内。当然不是10美元。

一个更可靠的计时器是使用CADisplayLink,它通常比NSTimer更可靠地锁定在每秒60帧的显示帧速率上,后者似乎具有较低的优先级,因此会导致更大的延迟或触发时间抖动。为了获得更好的时序分辨率,您可以尝试在专用线程中使用支持回旋参数的GCD调度计时器,甚至可以坐在旋转循环中轮询mach计时器。