我正在尝试为我的程序实现倒计时功能。它是第二个计时器,因此我使用时间间隔为1.0秒的NSTimer
对象来更新UI。但是为了不累积错误(每1.0秒间隔会产生一点滞后),程序计算UI中显示的剩余时间的当前时间和开始时间之间的绝对差值。
问题是,在NSTimer
对象运行了很长时间(比如半小时)之后,由于累积错误,它不再与绝对时间“同步”:UI更新发生在两个“绝对”之间“秒。例如,如果倒计时从00:00:00.000
开始,则首先在00:00:01.000
,00:00:02.000
处更新用户界面...但过了一段时间后,它会变为00:30:03.567
或类似的内容。< / p>
知道如何处理这件事吗?还有其他更好的方法来实现吗?谢谢!
答案 0 :(得分:2)
一个高级别的想法是根据绝对时间计算检测定时器何时变得太远不同步。当它超过一个特定的阈值,比如说0.01秒或任何你想要的时候,取消当前的计时器,并在适当的延迟后开始一个新的计时器,并将其恢复为同步状态。