"校准和#34; NSTimer用于UI更新

时间:2015-01-22 02:45:09

标签: ios macos cocoa cocoa-touch

我正在尝试为我的程序实现倒计时功能。它是第二个计时器,因此我使用时间间隔为1.0秒的NSTimer对象来更新UI。但是为了不累积错误(每1.0秒间隔会产生一点滞后),程序计算UI中显示的剩余时间的当前时间和开始时间之间的绝对差值。

问题是,在NSTimer对象运行了很长时间(比如半小时)之后,由于累积错误,它不再与绝对时间“同步”:UI更新发生在两个“绝对”之间“秒。例如,如果倒计时从00:00:00.000开始,则首先在00:00:01.00000:00:02.000处更新用户界面...但过了一段时间后,它会变为00:30:03.567或类似的内容。< / p>

知道如何处理这件事吗?还有其他更好的方法来实现吗?谢谢!

1 个答案:

答案 0 :(得分:2)

一个高级别的想法是根据绝对时间计算检测定时器何时变得太远不同步。当它超过一个特定的阈值,比如说0.01秒或任何你想要的时候,取消当前的计时器,并在适当的延迟后开始一个新的计时器,并将其恢复为同步状态。