-(void)viewDidUnload{
[childController release], childController = nil;
}
-(void)dealloc{
[childController release];
}
我看到了上面提到的方法,并且好奇为什么在两个都发布了childController?
答案 0 :(得分:3)
当视图不可见时,可以在低内存警告情况下调用ViewDidUnload,在这种情况下,需要释放在loadView / viewDidLoad或保留的NIB出口中创建/保留的任何对象。如果再次/显示视图控制器的视图,则可以/将重新创建这些对象。显然,不处理viewDidUnload中对象的释放会导致内存泄漏和崩溃。
通常,您也希望在viewDidUnload中取出值,以便在viewDidUnload(没有重新加载视图)之后对dealloc的后续调用在调用垃圾对象上的释放时不会导致崩溃。 / p>
通常,对于属性,您只需要在viewDidUnload中执行self.childController = nil;
,它会处理对象的释放和nil'ing。