2011-03-04 135 views
2

据我所知,实例变量在dealloc释放(如下图所示),但什么时候是它叫什么名字?是否所有实例变量都是在应用程序关闭时发布的,或者是否有可接受的方式让它们在不需要时单独释放?什么时候(void)dealloc在AppDelegate中被调用?

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

[退出应用程序时正常执行dealloc方法是否可能出现重复?](http://stackoverflow.com/questions/5079563/does-dealloc-method-being-executed-normally-when-quitting-the-应用程序) – Vladimir 2011-03-04 09:55:57

+0

谢谢,@Vladimir,但我没有那么多兴趣它是否叫这么多,因为知道具体的时候,它被调用。 – 2011-03-04 10:04:30

+1

仅仅是明确的 - 你忘了'[超级的dealloc]'在方法结束) – Eimantas 2011-03-15 04:24:34

回答

6

像任何其他对象,当没有其他对象保留它的应用程序委托将被释放。这是非常不寻常有一个应用程序委托直到应用程序终止周围不沾,和其他人指出,应用可懒得释放和释放任何退出之前。

我认为这是一个安全的赌注,如果没有比其他应用程序对象保留了它,你给应用程序一个新的委托应用程序委托将被释放。除了这种不寻常的情况,应用程序委托的-dealloc方法可能根本不会被经常调用。然而,这并不意味着你不应该正确地实现它 - 这是预期的行为,并且事情可能会在未来的iOS版本中轻易改变。

相关问题