您实际上可以在viewDidUnload中释放所有保留的子视图。但我曾经以另一种方式做:
-(void) viewDidLoad {
someInstanceView1 = [[UIView alloc] init];
[self.view addSubview: someInstanceView1];
[someInstanceView1 release];
someInstanceView2 = [[UIView alloc] init];
[self.view addSubview: someInstanceView2];
[someInstanceView2 release];
//etc...
//you have a references to someInstanceView1 and someInstanceView2 with retained counts 1
}
在这种情况下,即使出现内存警告,视图控制器将删除所有的视图子视图。然后再次调用viewDidLoad。所以不会有泄漏,你不需要关心如何释放这些ivars,因为唯一的所有者(它对视图有强烈的引用)是视图控制器的视图,它会自动释放它们。
来源
2011-02-22 18:53:50
Max
我想这就是为什么苹果把这个评论放在模板的viewDidUnload方法中// //释放主视图的任何保留子视图。 //例如self.myOutlet = nil;` – 2011-02-22 18:44:00
@fluchtpunkt你能否详细说明你的评论并将其作为回答发布?他们什么时候应该重新初始化? – JoePasq 2011-02-22 18:51:12