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

Vig*_*abu 2 release objective-c ios

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

object = nil;
[object release]
Run Code Online (Sandbox Code Playgroud)

VS

[object release];
object = nil;
Run Code Online (Sandbox Code Playgroud)

这是最好的做法?

Oli*_*ver 9

object = nil; 
[object release]
Run Code Online (Sandbox Code Playgroud)

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

[object release]; 
object = nil;
Run Code Online (Sandbox Code Playgroud)

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

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

self.object = nil;
Run Code Online (Sandbox Code Playgroud)

等于叫:

[object release]; 
object = nil;
Run Code Online (Sandbox Code Playgroud)