"Calibrate" NSTimer UI 更新

"Calibrate" NSTimer for UI updates

我正在尝试为我的程序实现倒计时功能。这是一个秒计时器,所以我使用一个时间间隔为 1.0 秒的 NSTimer 对象来更新 UI。但为了不累积误差(每1.0秒间隔会产生一点延迟),程序计算UI.[=18中显示的剩余时间的当前时间与开始时间的绝对差值。 =]

问题是,在 NSTimer 对象运行了相当长的时间(比如半小时)后,由于累积误差,它不再 "synced" 具有绝对时间: UI 更新发生在两 "absolute" 秒之间。例如,如果倒计时从 00:00:00.000 开始,一开始 UI 会在 00:00:01.00000:00:02.000 更新……但过一会儿它会变成 00:30:03.567 之类的就这样。

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

一个高层次的想法是根据您的绝对时间计算来检测计时器何时过于不同步。当它超过一个特定的阈值时,比如 0.01 秒或任何你想要的,取消当前计时器并在适当的延迟后启动一个新的计时器 "in sync".