1

我正在使用 NSTimer 以特定的计时器间隔调用方法,通常超过十分钟,但如果有所不同。我有一个计时器标签,显示还剩多少分钟,我试图找出在计时器的分钟值更新时更新该标签的最佳方法。我能想到的唯一两种方法感觉有点hacky......

  1. 使用两个计时器,一个用于管理调用方法之前的时间量,另一个用于每分钟重新创建以更新标签的单独计时器。
  2. 使用一个每分钟重新创建的计时器并手动跟踪已经过去了多少时间,以便我知道何时调用该方法。

还有其他想法吗?

非常感谢你的智慧!

4

2 回答 2

2

你可以用一个来做到这一点NSTimer(我想这算作你的选项#2,但稍微扩展了):

  • 当您想安排将来调用的targetTime方法时,请计算该方法需要运行的时间。
  • 开始设置在和NSTimer中的较早者。now + 1 minutetargetTime
  • 当计时器触发时,将当前时间与targetTime. 如果我们在那里,运行目标方法;now + 1 minute否则,重新安排计时器在较早的时间targetTime
于 2013-09-16T03:30:34.977 回答
0

为计时器持续时间实现一个符合 KVO 的属性,使用自定义设置器使计时器无效(如果已经存在),将其丢弃,并创建和调度具有新持续时间的新计时器。

(或者,观察另一个拥有定时器的对象的属性。一个对象保存时间间隔,另一个保存定时器。然后您可以保留合成的设置器;您可以在观察者方法中创建/重新创建定时器。)

然后,在拥有该字段的控制器中,观察该属性,并在属性更改时更新该字段。

于 2013-09-16T14:20:52.750 回答