iPhone SDK:Dealloc vs. Release?

jp *_*nce 6 iphone

我想知道release和dealloc之间的区别是什么?阅读后,内存管理规则(见下文).我正在考虑大部分时间我将使用发布.但是,我想知道如何处理物业.

@属性(保留)....

我一直在使用dealloc,但在阅读本文后,我不确定这是否正确.

如果使用名称以"alloc"或"new"开头或包含"copy"(例如,alloc,newObject或mutableCopy)的方法创建对象,或者向其发送保留消息,则获取对象的所有权.您有责任使用release或autorelease放弃您拥有的对象的所有权.在收到对象的任何其他时间,您不得释放它.

Ben*_*n S 21

你永远不应该打电话dealloc给别的super.

您将要调用的唯一时间deallocdealloc自定义继承对象的方法,它将是[super dealloc].

当一个对象的保留计数下降到零,dealloc会自动调用你,所以为了正确地管理内存,你需要调用retainrelease在适当的时候.

如果您不清楚这一点,或者您想了解有关如何在Cocoa中管理内存的详细信息,则应阅读" 内存管理编程指南".


luv*_*ere 5

你永远不会直接打电话给dealloc.当对象的retainCount变为0 时,系统将调用它.每次执行retain时,retainCount都会增加1.每次执行释放时,它都会递减.这样,通过平衡保留释放,您可以确保当retainCount达到0时,将自动调用dealloc,并释放您的对象.

正如Ben S所指出的那样,你可以调用dealloc的唯一时间和地点是继承对象的dealloc方法.