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

Old*_*her 2 iphone objective-c dealloc ios

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

- (void)dealloc {
    [fred release];
    [wilma release];
    [barney release];
    [betty release];
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

Cal*_*leb 6

与任何其他对象一样,当没有其他对象保留它时,将释放应用程序委托.在应用程序终止之前有一个不会留下的应用程序委托是非常不寻常的,正如其他人所指出的那样,应用程序可能不会在它退出之前释放和解除分配任何东西.

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