我是 iphone 新手,我想知道何时调用 -(void) dealloc 方法。我知道它是用来释放对象的,但是我们可以使用 dealloc 方法释放任何类型的对象吗?是否有必要添加这个方法以及为什么我们在dealooc方法中写[suped dealloc]?
分享你的观点。
我是 iphone 新手,我想知道何时调用 -(void) dealloc 方法。我知道它是用来释放对象的,但是我们可以使用 dealloc 方法释放任何类型的对象吗?是否有必要添加这个方法以及为什么我们在dealooc方法中写[suped dealloc]?
分享你的观点。
这是直接来自 APPLE 文档的解释
NSObject 类定义了一个方法,dealloc,当一个对象没有所有者并且它的内存被回收时自动调用它——在 Cocoa 术语中它是“释放”或“释放”。
重要的
永远不要直接调用另一个对象的 dealloc 方法。
这是我们为什么打电话的答案[super dealloc]
?
您必须在实现结束时调用超类的实现。您不应将系统资源的管理与对象生命周期联系起来
当应用程序终止时,可能不会向对象发送 dealloc 消息。因为进程的内存在退出时会自动清除,所以简单地让操作系统清理资源比调用所有内存管理方法更有效。
您可以释放您分配、复制或保留的对象,这很容易理解。你不能释放那些没有被你分配的对象意味着自动释放对象,ios检测到在内存中不再使用,那个时候自动释放池会耗尽那些对象自动从内存中释放的时间。
当对象保留计数变为零时调用对象 dealloc 方法。
您永远不会直接发送 dealloc 消息。相反,对象的 dealloc 方法是通过释放 NSObject 协议方法间接调用的(如果释放消息导致接收者的保留计数变为 0)。有关使用这些方法的更多详细信息,请参阅内存管理编程指南。
子类必须实现它们自己的 dealloc 版本,以允许释放对象消耗的任何额外内存——例如为数据或对象实例变量动态分配的存储被释放对象所拥有。在执行特定于类的释放后,子类方法应该通过向 super 发送消息来合并超类版本的 dealloc:
参考这个链接