使NSTimer无效?

Nex*_*Rev 1 iphone sdk xcode nstimer invalidation

如果我有一个在viewdidload中启动的NSTimer,那么离开该视图时它在哪里是无效的?是否也有必要释放它?

tas*_*oor 5

如果您使用NSTimer scheduledTimerWithTimeInterval创建一个计时器...那么您不需要释放它,因为您不拥有它.

现在重要的是计时器类保留了目标,在大多数情况下,我们使用self作为目标.如果计时器不重复,则在计时器处理程序完成后,它将自动变为无效并释放目标.所以你无事可做.但是如果您的计时器在离开视图时仍处于暂挂状态(如果您在计时器被触发或计时器重复之前离开会发生这种情况),那么您需要使其无效.这个地方绝不是dealloc方法.由于计时器本身保留了目标,因此在计时器无效之前不会调用dealloc.

因此,当您知道不再需要此项时,最好无效.这可能是移动到另一个视图的操作.假设用户点击一个按钮,然后在按钮处理程序中移动到其他视图.您可以在此按钮处理程序中失效.