如何检测NSTimer每分钟何时发生变化?

时间:2013-09-16 03:16:54

标签: iphone ios cocoa

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

  1. 使用两个计时器,一个用于管理呼叫前的时间 该方法和每分钟重新创建的单独计时器 更新标签。
  2. 使用每分钟重新创建的一个计时器 并手动记录已经过了多长时间,所以我知道什么时候 调用方法。
  3. 还有其他想法吗?

    非常感谢你的智慧!

2 个答案:

答案 0 :(得分:2)

你可以用一个NSTimer来做(我想这可以作为你的选择#2,但略有扩展):

  • 如果要安排将来要调用的方法,请计算方法需要运行时的时间targetTime
  • NSTimernow + 1 minute之前设置的targetTime开始。
  • 当计时器触发时,将当前时间与targetTime进行比较。如果我们在那里,运行目标方法;否则,请在now + 1 minutetargetTime之前重新安排计时器。

答案 1 :(得分:0)

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

(或者,从另一个拥有计时器的对象中观察属性。一个对象保存时间间隔,另一个保存计时器。然后你可以保留合成的setter;你可以用observer方法创建/重新创建计时器。)

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