在viewDidUnload中调用[self<>]是否安全?

时间:2011-07-29 04:22:39

标签: iphone objective-c

做以下事情是否安全:

- (void) viewDidUnload {
   [self cleanup] ;
   [super viewDidUnload];
}

因为当视图卸载时,我听说“自我”之类的东西甚至可能不会以非腐败的形式存在,因此它可能是不安全的。这样安全吗?

1 个答案:

答案 0 :(得分:5)

这是完全安全的。当视图控制器暂时取消分配视图以节省内存时,会在低内存情况下调用viewDidUnload。您只是不想在那里访问控制器的view属性,因为这会导致控制器再次延迟加载视图。除此之外,在self中调用viewDidLoad上的方法是完全安全的。

您可能会想到dealloc方法。我见过有人断言你不应该在selfinit方法中调用dealloc上的方法,因为你的对象可能处于部分初始化/释放状态。我猜想有人会试图修改或覆盖你正在调用的方法而不会意识到它是在部分形成的对象上调用的。如果未在dealloc中将已发布的属性设置为nil,则会增加此风险。