dealloc方法什么时候调用?

时间:2012-12-13 05:18:31

标签: iphone objective-c

我是iphone的新手,我想知道什么时候 - (void)dealloc方法调用。我知道它用于释放对象但我们可以使用dealloc方法释放任何类型的对象吗?是否有必要添加此方法以及为什么我们在dealooc方法中编写[suped dealloc]?

分享您的观点。

3 个答案:

答案 0 :(得分:1)

这是直接来自APPLE的文档的解释

  

NSObject类定义了一个被调用的方法dealloc   当一个对象没有所有者及其内存时自动   回收可可术语,它被“释放”或“解除分配”。

重要

  

永远不要直接调用另一个对象的dealloc方法。

以下是我们致电[super dealloc]

的答案
  

你必须在你的结尾调用超类的实现   实现。您不应该将系统资源的管理与   对象生命周期

     

当应用程序终止时,可能不会向对象发送dealloc   信息。因为进程的内存会自动清除   退出,只是允许操作系统更有效   清理资源而不是调用所有内存管理方法。

答案 1 :(得分:0)

您可以释放由您分配,复制或保留的对象,这很容易理解。你不能发布没有分配的对象意味着自动释放对象,ios在内存中检测不再使用,那时自动释放池会自动释放那些从内存中自动释放的对象。

当对象保留计数变为零时调用的对象dealloc方法。

答案 2 :(得分:0)

您永远不会直接发送dealloc消息。相反,通过释放NSObject协议方法间接调用对象的dealloc方法(如果释放消息导致接收者的保留计数变为0)。有关使用这些方法的详细信息,请参阅“内存管理编程指南”。

子类必须实现自己的dealloc版本,以允许释放对象消耗的任何额外内存 - 例如动态分配的存储空间,用于释放对象所拥有的数据或对象实例变量。在执行特定于类的释放后,子类方法应该通过消息将dealloc的超类版本合并到super:

请参阅此Link