我正在使用 NSTimer 以特定的计时器间隔调用方法,通常超过十分钟,但如果有所不同。我有一个计时器标签,显示还剩多少分钟,我试图找出在计时器的分钟值更新时更新该标签的最佳方法。我能想到的唯一两种方法感觉有点hacky......
- 使用两个计时器,一个用于管理调用方法之前的时间量,另一个用于每分钟重新创建以更新标签的单独计时器。
- 使用一个每分钟重新创建的计时器并手动跟踪已经过去了多少时间,以便我知道何时调用该方法。
还有其他想法吗?
非常感谢你的智慧!
你可以用一个来做到这一点NSTimer
(我想这算作你的选项#2,但稍微扩展了):
targetTime
方法时,请计算该方法需要运行的时间。NSTimer
中的较早者。now + 1 minute
targetTime
targetTime
. 如果我们在那里,运行目标方法;now + 1 minute
否则,重新安排计时器在较早的时间targetTime
。为计时器持续时间实现一个符合 KVO 的属性,使用自定义设置器使计时器无效(如果已经存在),将其丢弃,并创建和调度具有新持续时间的新计时器。
(或者,观察另一个拥有定时器的对象的属性。一个对象保存时间间隔,另一个保存定时器。然后您可以保留合成的设置器;您可以在观察者方法中创建/重新创建定时器。)
然后,在拥有该字段的控制器中,观察该属性,并在属性更改时更新该字段。