2010-09-21 77 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足够容易检查。