为什么viewDidUnload中有发布声明?

时间:2011-04-24 03:54:30

标签: ios memory-management

-(void)viewDidUnload{
    [childController release], childController = nil;
}

-(void)dealloc{
    [childController release];
}

我看到了上面提到的方法,并且好奇为什么在两个都发布了childController?

1 个答案:

答案 0 :(得分:3)

当视图不可见时,可以在低内存警告情况下调用ViewDidUnload,在这种情况下,需要释放在loadView / viewDidLoad或保留的NIB出口中创建/保留的任何对象。如果再次/显示视图控制器的视图,则可以/将重新创建这些对象。显然,不处理viewDidUnload中对象的释放会导致内存泄漏和崩溃。

通常,您也希望在viewDidUnload中取出值,以便在viewDidUnload(没有重新加载视图)之后对dealloc的后续调用在调用垃圾对象上的释放时不会导致崩溃。 / p>

通常,对于属性,您只需要在viewDidUnload中执行self.childController = nil;,它会处理对象的释放和nil'ing。