设置object = nil和[object release] VS [object release]和object = nil有什么区别?

时间:2011-11-16 11:26:05

标签: objective-c ios release

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

object = nil;
[object release]

Vs的

[object release];
object = nil;

这是最佳做法?

1 个答案:

答案 0 :(得分:9)

object = nil; 
[object release]

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

[object release]; 
object = nil;

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

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

self.object = nil;

等于致电:

[object release]; 
object = nil;