如何解决这个performSelector:withObject:afterDelay:问题?

时间:2010-02-25 18:19:18

标签: iphone

我有一个视图控制器,它调用performSelector:withObject:afterDelay。但是,如果我在调用此对象后立即删除该视图控制器,则只要系统尝试在该(已删除)视图控制器上执行延迟选择器,我的应用程序就会崩溃。

现在我该如何解决这个问题?我需要摆脱视图控制器以节省内存,所以没有办法让它闲逛。

在执行之前取消延迟执行选择器的任何方法吗?

2 个答案:

答案 0 :(得分:3)

我建议改用NSTimer。您可以简单地invalidate计时器,以确保在UIViewController消失后永远不会调用它。例如invalidate viewWillDisappear:中{{1}}计时器的好时机。

这意味着视图控制器定时器拥有。但无论如何,这是一个很好的设计。

答案 1 :(得分:1)

您无法对已删除的对象执行选择器,您需要拥有该对象,或者使用其他可以悬挂的较小对象进行处理。

要取消,有cancelPreviousPerformRequestsWithTarget:selector:object:cancelPreviousPerformRequestsWithTarget:方法。