2011-11-16 77 views

回答

9
object = nil; 
[object release] 

不这样做。您正在发送一个release消息在一个无所事事的零对象上。但是由对象引用的对象仍然在内存中,因为它从未收到过release消息。

[object release]; 
object = nil; 

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

但是如果你使用一个保留的财产@property(nonatomic, retain),美其名曰:

self.object = nil; 

等于致电:

[object release]; 
object = nil; 
+0

嗨@Oliver ,这对于'[object release];'&'[object release]; object = nil;'当'你使用保留属性@property(nonatomic,retain)'时是相等的? – Kjuly

+1

@Kjuly:不,如果你只是释放它,它不会被设置为零。如果您将其设置为零,则将其释放并设置为零。如果您释放并将其设置为零,则将其设置为零也是一样。当然,对于保留的财产。 – Oliver

+0

谢谢! @Oliver:D – Kjuly

相关问题