3

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

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

1 回答 1

7

与任何其他对象一样,应用程序委托将在没有其他对象保留它时被释放。有一个应用程序委托在应用程序终止之前不会一直存在是很不寻常的,正如其他人所指出的那样,应用程序可能不会在它退出之前释放和释放任何东西。

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

于 2011-03-05T06:43:37.767 回答