2010-09-21 65 views
0

釋放對象例如:不同的指針

MyClass *obj1 = [[MyClass alloc] init]; 
MyClass *obj2 = [obj1 retain]; 

[obj2 release]; 
[obj2 release]; 

釋放它是合法的做到這一點?對象是否會被正確釋放?

回答

1

是的,它會正常工作。無論您使用哪個指針變量,您都會在同一個對象上調用釋放。

雖然看起來有點奇怪。

而且,一個常見的成語是

[obj1 release], obj1 = nil; 
[obj2 release], obj2 = nil; 

它,如果你在兩行中使用obj2的顯然是行不通的。

0

您可以通過測試,如果obj1 == obj2足夠容易檢查。