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