gpt4 book ai didi

objective-c - setting object = nil and [object release] VS [object release] and object = nil 有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:05 30 4
gpt4 key购买 nike

这两个代码片段有什么区别:

object = nil;
[object release]

对比

[object release];
object = nil;

哪个是最佳实践?

最佳答案

object = nil; 
[object release]

不要那样做。您正在向一个什么都不做的 nil 对象发送一个 release 消息。但是您的对象引用的对象仍在内存中,因为它从未收到过 release 消息。

[object release]; 
object = nil;

在这里你释放了对象,为了方便和安全,你设置了nil作为它的引用。因此,您可以调用(当然是错误的:-))该对象上的任何方法,应用程序不会崩溃。

但是如果你使用保留属性@property(nonatomic, retain),调用:

self.object = nil;

等于调用:

[object release]; 
object = nil;

关于objective-c - setting object = nil and [object release] VS [object release] and object = nil 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8150896/

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