设置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?
问题描述
这两个代码段之间有什么区别:
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屋!