在dealloc中调用super是否重要?

She*_*lam 10 memory iphone cocoa cocoa-touch objective-c

- (void)dealloc {
    [super dealloc];
    [receivedData release]; receivedData = nil;
}
Run Code Online (Sandbox Code Playgroud)

要么

- (void)dealloc {
    [receivedData release]; receivedData = nil;
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*ark 16

是的,它在[super dealloc]调用时绝对匹配.一旦[super dealloc]被调用,你就不能再依赖NSObject(或者你的根类是什么)机器来正常运行.毕竟,你的超类' -dealloc方法应该调用它的超类'等,直到调用根类' -dealloc方法.此时,如果您尝试使用其中任何一个,那么这些类分配用于完成其工作的所有内容都可能会消失,并且您处于未定义的区域.

你的-dealloc方法总是应该是这样的

- (void)dealloc
{
   // release my own stuff first

   [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)


Ste*_*yes 13

是.持续.总是.

  • 当你使用[super dealloc]; 基础对象被破坏.如果使用在基础对象中声明的某些数据,则会导致崩溃.你最后应该打电话给它 (2认同)