如何退出NSTimer?

时间:2012-01-10 01:13:18

标签: objective-c cocoa-touch

  

可能重复:
  NSTimer doesn't stop

我正在使用[NSThread exit]离开NSTimer线程。 它完全停止了应用程序。

如何停止或退出NSTimer线程?

4 个答案:

答案 0 :(得分:3)

[timer invalidate];
timer = nil;

答案 1 :(得分:2)

如果你想肯定停止NSTimer,你可以使用

[timer invalidate];

但是,如果您想暂时阻止定时器触发,可以考虑使用

[timer setFireDate:[NSDate distantFuture]];

来自Apple Documentation

  

一旦在运行循环上调度,计时器将以指定的时间间隔触发,直到它失效。非重复计时器在触发后立即使其自身无效。但是,对于重复计时器,您必须通过调用其invalidate方法自行使计时器对象无效。调用此方法请求从当前运行循环中删除计时器;因此,您应始终从安装计时器的同一线程中调用invalidate方法。使计时器失效会立即禁用它,以使其不再影响运行循环。然后,run循环在invalidate方法返回之前或之后的某个时间点删除并释放计时器。一旦失效,就不能重复使用计时器对象。

答案 2 :(得分:2)

您应仔细检查以确保计时器有效,然后再将其设为无效。

if ([timer isValid]) {
    [timer invalidate];
    timer = nil;
}

答案 3 :(得分:0)

我不确定NSTimer thread的含义,但要停止您安排的NSTimer实例,可以致电[NSTimer invalidate]