在不同的指针上释放对象

时间:2010-09-21 01:38:58

标签: iphone objective-c

例如:

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

并以

发布
[obj2 release];
[obj2 release];

这样做是否合法?对象是否会正确释放?

2 个答案:

答案 0 :(得分:1)

是的,它会正常工作。你在同一个对象上调用release,无论你使用哪个指针变量。

虽然看起来有点奇怪。

而且,一个常见的习语是

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

如果你在两行中都使用了obj2,这显然是行不通的。

答案 1 :(得分:0)

您可以通过测试obj1 == obj2

来轻松检查