Objective c 何时调用dealloc以及它是如何工作的?
可能重复:Objective c 何时调用dealloc以及它是如何工作的?,objective-c,cocoa,Objective C,Cocoa,可能重复: 何时调用dealloc方法?它是否自动调用 如果我写 UIButton *Btn = [UIButton alloc]; [Btn release]; 然后,由于引用计数为零,现在是否调用了dealloc 如果没有,那么什么时候以及如何工作?什么是超级 当它被调用时,我在dealloc中发布的所有内容是否都被发布?例如,假设调用了dealloc,我们实现了btn1和btn2,但是btn2的引用计数仍然是两个。调用dealloc时,btn2也被释放,其引用计数为1,还是变为零?
何时调用
dealloc
方法?它是否自动调用
如果我写
UIButton *Btn = [UIButton alloc];
[Btn release];
然后,由于引用计数为零,现在是否调用了dealloc
如果没有,那么什么时候以及如何工作?什么是超级
当它被调用时,我在dealloc
中发布的所有内容是否都被发布?例如,假设调用了dealloc
,我们实现了btn1
和btn2
,但是btn2
的引用计数仍然是两个。调用dealloc
时,btn2
也被释放,其引用计数为1,还是变为零?
将自动发送到没有更多所有者的对象(即保留它的每个对象,dealloc
释放它)
调用超类(当前对象的父类)的dealloc方法。由于Cocoa框架中几乎每个类都至少是从[super dealloc]
子类化的,因此这一行对于适当的内存释放是必需的NSObject
alloc
时,可能根本没有任何类型的分配;这是一个实现细节。榜样<代码>[NSString alloc]不分配任何内容。