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