对于通过scheduledTimerWithTimeInterval分配的NSTimer属性,应该使用什么保留策略?

时间:2012-04-23 22:09:34

标签: ios

我正准备将NSTimer属性添加到我的一个类中,以便在必要时可以取消它。 我将与+ scheduledTimerWithTimeInterval:

一起使用它

我应该使用strong,assign,copy或unsafe_unretained吗? (使用ARC)。

1 个答案:

答案 0 :(得分:1)

使用strong。通常,您还需要覆盖这样的setter:

- (void)setTimer:(NSTimer *)aTimer {
  if (aTimer != _timer) {
    [_timer invalidate];
    _timer = aTimer;
  }
}

这样当您更改或清除(nil)计时器时,旧计时器将自动失效(因此将来不会触发)。

如果您执行aTimer != _timer之类的操作,self.timer = self.timer可以避免您的计时器失效。虽然你可能永远不会直接这样做,但它有时可能会间接发生。