我需要以非常准确的时间运行游戏循环。我正在尝试使用NSTimer来执行此操作,但结果很好,但是有点漂移。
当NSTimer触发时,下一次事件在处理程序完成时开始计数还是立即开始计数。
如果前者对我来说合理,则可以使用setFireDate尝试抵消下一次计时器触发时间-当我尝试执行此操作时,情况似乎更糟。

我的计时器设置为每44毫秒触发一次,我希望它的漂移不超过20毫秒。如果它确实漂移了,我想为下一次火灾纠正它。
尝试使用NSTimer这样做是否合理?

最佳答案

您可以尝试创建一个线程并在该线程的运行循环上安排计时器。将计时器作为该运行循环中的唯一对象将限制可能干扰该计时器的事物的数量。

如果这不起作用,那么您已经在线程上运行了它,因此您最好切换到usleep()循环。

关于iphone - 使用NSTimer获得准确的时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/734399/

10-13 05:42