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
    将自动发送到没有更多所有者的对象(即保留它的每个对象,
    释放它)
  • [super dealloc]
    调用超类(当前对象的父类)的dealloc方法。由于Cocoa框架中几乎每个类都至少是从
    NSObject
    子类化的,因此这一行对于适当的内存释放是必需的

应该注意,当您调用
alloc
时,可能根本没有任何类型的分配;这是一个实现细节。榜样<代码>[NSString alloc]
不分配任何内容。