我何时应该在dealloc中释放一个对象?

时间:2010-02-17 16:26:22

标签: iphone objective-c memory-management

有时候,在目标C中为iPhone编码时,我想知道是否应该在dealloc中发布一个对象,或者如果该视图是应用程序中另一个很少使用的部分,有时候最好在viewWillDisappear中发布。

感谢。

1 个答案:

答案 0 :(得分:2)

首先,您可能希望在viewDidDisappear:(在屏幕外)之后发布内容,而不是viewWillDisappear:无论如何,您应该在viewDidDisappear:dealloc中发布内容viewDidDisappear: ...

dealloc中,您应该在屏幕外时释放任何不需要的内容,以节省内存。在viewDidDisappear:中,您应该释放您的对象可能保留的所有内容。如果您的代码是通过未调用viewDidDisappear:的奇怪路径输入的,则无论您是否可能在{{1}}中释放它,都希望这样做。当您在不同的上下文中重用视图控制器时,或者当Apple更改了您正在容纳VC的集合视图控制器时,可能会发生这种情况。

只要你在释放ivars之后适当地将它们弄清楚(如果你使用属性就应该自动发生)那么过度释放将不会成为一个问题,因为如果你在两个地方释放第二个版本最终会将发布消息发送给nil。