如果我有一个在viewdidload中启动的NSTimer,那么离开该视图时它在哪里是无效的?是否也有必要释放它?
答案 0 :(得分:5)
如果您使用NSTimer scheduledTimerWithTimeInterval创建一个计时器...那么您不需要释放它,因为您不拥有它。
现在重要的是计时器类保留了目标,在大多数情况下我们使用self作为目标。如果计时器不重复,则在计时器处理程序完成后,它将自动变为无效并释放目标。所以你无事可做。但是如果您的计时器在离开视图时仍处于暂挂状态(如果您在计时器被触发或计时器重复之前离开会发生这种情况),那么您需要使其无效。这个地方绝不是dealloc方法。由于计时器本身保留了目标,因此在计时器无效之前不会调用dealloc。
因此,当您知道不再需要此项时,最好无效。这可能是移动到另一个视图的操作。假设用户点击一个按钮,然后在按钮处理程序中移动到其他视图。您可以在此按钮处理程序中失效。