什么(void)dealloc在AppDelegate中被调用?

时间:2011-03-04 09:52:00

标签: iphone objective-c ios dealloc

我知道实例变量是在dealloc中释放的(如下所示),但究竟是什么时候调用的?应用程序关闭后是否释放所有实例变量,或者是否有一种可接受的方式让它们在不需要时单独解除分配?

- (void)dealloc {
    [fred release];
    [wilma release];
    [barney release];
    [betty release];
    [super dealloc];
}

1 个答案:

答案 0 :(得分:6)

与任何其他对象一样,当没有其他对象保留它时,将释放应用程序委托。在应用程序终止之前,让应用程序代理不会停留是非常不寻常的,并且正如其他人所指出的那样,应用程序可能不会在它退出之前释放和解除分配任何内容。

我认为如果没有应用程序以外的任何对象保留它并且您为应用程序提供了新的委托,那么应用程序委托将被解除分配是一个安全的选择。除了这种不寻常的情况,app委托的-dealloc方法可能根本不会被调用。但是,这并不意味着您不应该正确实现它 - 它是预期的行为,并且在未来的iOS版本中很容易发生变化。