您實際上可以在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