gpt4 book ai didi

iphone - 我们为什么要释放?

转载 作者:行者123 更新时间:2023-12-03 18:42:37 26 4
gpt4 key购买 nike

我经常看到当我们释放 ab 对象时,我们立即将其设置为 nil。我知道release和nil都会释放与对象关联的旧值,但是在release的情况下,它会将对象保留为悬空指针,因此我们必须将其设置为nil。

所以我的问题是,如果nil释放了对象的旧值并将对象设置为nil,为什么我们不应该只使用nil,为什么我们也应该使用release。

方式1:

MyClass *obj = [[MyClass alloc] init];
[obj release];
obj = nil;

方式2:

MyClass *obj = [[MyClass alloc] init];
obj = nil;

way1和way2的真正区别是什么,如果使用way1为什么不只使用way2?

最佳答案

将指针设置为 nil 不会释放该指针先前目标所占用的内存。用简单的英语来说,将其分配给 nil 并不会释放它。

如果您的应用程序被垃圾收集,则释放是一项无操作,可以省略。否则,这是非常非常有必要的。因此,方式 1 始终是正确的,而方式 2 仅在垃圾回收下才是正确的。

注意:此答案不适用于使用自动引用计数的项目。在 ARC 下,将指针设置为 nil确实向对象发送释放。

关于iphone - 我们为什么要释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1761036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com