0

我对编码比较陌生,想知道是否有一种传统的方法可以在循环的每 n 次迭代中执行一些代码(在这种情况下,是一个 NSTimer 滴答作响)。

我正在使用 aCADisplayLink并且它每秒更新很多次,40、50 等等。如果我想在每个循环中执行一些代码,比如 500 个循环,有没有标准的方法可以做到这一点?我想我可以将一些东西与modulooperator 和 an放在一起integer,但是有没有更好/更规范的方式让新编码员知道?

额外的清晰度(尽管我确信这是一件相当常见的事情..):我有一个每秒滴答 60 次的计时器,但我只想在每 10 次迭代时做一些事情。我已经知道我可以使用模数和整数来做到这一点,但我想知道是否有任何其他约定来处理这种情况。

提前致谢!

4

1 回答 1

0

为正确的间隔建立一个专用计时器。

无论您是否使用NSTimerCADisplayLink,如果时间过长,定时器调用都可以合并和抵消。如果您有一个需要 20 帧运行的显示链接,它每秒只被调用三次(假设刷新间隔为每秒 60 帧)。而且,如果您将计时器设置为每秒运行一次,而在一个实例中运行时间超过两秒半,那么它将“吃掉”下一次迭代,并且将在半秒后运行下一次迭代。

因此,如果您只计算计时器调用,您的计时器可能会不同步。要在某个时间间隔内重复做某事,将计时器设置为该时间间隔是绝对最佳的近似值。

拥有这样的第二个计时器不是性能问题,除非你做了很多计时器,在这种情况下,你应该标准化一个滴答计时器并为特定时间点安排事件(这仍然与计算以前的迭代不同) .

于 2013-01-09T12:53:22.563 回答