有时候,在目标C中为iPhone编码时,我想知道是否应该在dealloc中发布一个对象,或者如果该视图是应用程序中另一个很少使用的部分,有时候最好在viewWillDisappear中发布。
感谢。
答案 0 :(得分:2)
首先,您可能希望在viewDidDisappear:
(在屏幕外)之后发布内容,而不是viewWillDisappear:
无论如何,您应该在viewDidDisappear:
和dealloc
中发布内容viewDidDisappear:
...
在dealloc
中,您应该在屏幕外时释放任何不需要的内容,以节省内存。在viewDidDisappear:
中,您应该释放您的对象可能保留的所有内容。如果您的代码是通过未调用viewDidDisappear:
的奇怪路径输入的,则无论您是否可能在{{1}}中释放它,都希望这样做。当您在不同的上下文中重用视图控制器时,或者当Apple更改了您正在容纳VC的集合视图控制器时,可能会发生这种情况。
只要你在释放ivars之后适当地将它们弄清楚(如果你使用属性就应该自动发生)那么过度释放将不会成为一个问题,因为如果你在两个地方释放第二个版本最终会将发布消息发送给nil。