设置object = nil和[object release] VS [object release]和object = nil有什么区别? [英] What is the difference between setting object = nil and [object release] VS [object release] and object = nil?

查看:108
本文介绍了设置object = nil和[object release] VS [object release]和object = nil有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

What is the difference between these two code snippets:

object = nil;
[object release]

Vs

[object release];
object = nil;

这是最佳做法?

推荐答案

object = nil; 
[object release]

不要这样做。您正在nil对象上发送 release 消息,该消息将不执行任何操作。但是您的对象引用的对象仍然在内存中,因为它从未收到 release 消息。

Don't do that. You are sending a release message on a nil object that will just do nothing. But the object that was referenced by your object is still in memory because it has never received a release message.

[object release]; 
object = nil;

在此释放对象,为方便起见,您设置 nil 到它的参考。所以你可以调用(当然是错误的:-))该对象上的任何方法,应用程序不会崩溃。

Here you release the object, and for convenience and security, you set nil to its reference. So you can call (by mistake of course :-) ) any method on that object and the app won't crash.

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

But if you use a retained property @property(nonatomic, retain), calling :

self.object = nil;

等于来电:

[object release]; 
object = nil;

这篇关于设置object = nil和[object release] VS [object release]和object = nil有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆