0

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

分享你的观点。

4

3 回答 3

1

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

NSObject 类定义了一个方法,dealloc,当一个对象没有所有者并且它的内存被回收时自动调用它——在 Cocoa 术语中它是“释放”或“释放”。

重要的

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

这是我们为什么打电话的答案[super dealloc]

您必须在实现结束时调用超类的实现。您不应将系统资源的管理与对象生命周期联系起来

当应用程序终止时,可能不会向对象发送 dealloc 消息。因为进程的内存在退出时会自动清除,所以简单地让操作系统清理资源比调用所有内存管理方法更有效。

于 2012-12-13T06:09:11.773 回答
0

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

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

于 2012-12-13T05:23:30.747 回答
0

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

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

参考这个链接

于 2012-12-13T05:28:24.633 回答