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

发布于 2024-07-16 07:47:32 字数 172 浏览 8 评论 0原文

我想我知道其中的区别,但不知道如何正确解释。

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

release 将该变量内存的保留计数器递减 -1。 如果它是 1,那么它就是 0,所以此时它与 dealloc 具有相同的效果。

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

I think I know the difference, but don't know how to explain that correctly.

dealloc removes the memory reserved by that variable totally and immediately.

release decrements the retain counter of that variable's memory by -1. if it was 1, then it's 0, so it would have the same effect as dealloc in that moment.

is that right? or is there an better short explanation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千柳 2024-07-23 07:47:32

完全正确。

但是在使用对象时,您不会使用dealloc,因为您不知道保留计数是多少。 你也不关心。 您只需通过调用 release 表示您不再需要它。 一旦没有人这样做,该对象就会自行调用dealloc

That's exactly right.

But you wouldn't use dealloc, when using an object, because you don't know what the retain count is. Nor do you care. You just say that you don't need it anymore, by calling release. And once nobody does, the object will call dealloc on itself.

巾帼英雄 2024-07-23 07:47:32

全部正确,但您缺少的一个关键点是您永远不应该自己调用 dealloc。 以下是 Apple 文档中有关 NSObject 的 dealloc 方法的一些信息:(

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

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

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

All correct, but the one key point you're missing is that you should never call dealloc yourself. Here's some information from Apple's documentation on NSObject's dealloc method:

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

You never send a dealloc message
directly. Instead, an object’s dealloc
method is invoked indirectly through
the release NSObject protocol method
(if the release message results in the
receiver's retain count becoming 0).
See Memory Management Programming
Guide for Cocoa for more details on
the use of these methods.

Subclasses must implement their own
versions of dealloc to allow the
release of any additional memory
consumed by the object—such as
dynamically allocated storage for data
or object instance variables owned by
the deallocated object. After
performing the class-specific
deallocation, the subclass method
should incorporate superclass versions
of dealloc through a message to super:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文