当前位置:  开发笔记 > 前端 > 正文

什么能最好地解释[myVar dealloc]和[myVar release]之间的区别?

如何解决《什么能最好地解释[myVardealloc]和[myVarrelease]之间的区别?》经验,为你挑选了2个好方法。

我想我知道区别,但不知道如何正确解释.

dealloc完全立即删除该变量保留的内存.

release将该变量的内存的retain计数器递减-1.如果它是1,那么它是0,所以它会在那一刻产生与dealloc相同的效果.

是对的吗?还是有更好的简短解释?



1> Jaka Jančar..:

这是完全正确的.

但是dealloc在使用对象时你不会使用,因为你不知道保留计数是什么.你也不在乎.你只需要说你不再需要它了release.一旦没有人这样做,该对象就会dealloc自行调用.



2> Adam Alexand..:

一切都正确,但你缺少的一个关键点是你永远不应该自己调用dealloc.以下是Apple关于NSObject dealloc方法的文档中的一些信息:

(来自http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference.html#//apple_ref/occ/instm/NSObject/dealloc)

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

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

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有