例如:
MyClass *obj1 = [[MyClass alloc] init];
MyClass *obj2 = [obj1 retain];
并以
发布[obj2 release];
[obj2 release];
这样做是否合法?对象是否会正确释放?
答案 0 :(得分:1)
是的,它会正常工作。你在同一个对象上调用release,无论你使用哪个指针变量。
虽然看起来有点奇怪。
而且,一个常见的习语是
[obj1 release], obj1 = nil;
[obj2 release], obj2 = nil;
如果你在两行中都使用了obj2,这显然是行不通的。
答案 1 :(得分:0)
您可以通过测试obj1 == obj2
。