我正在通过Aaron Hillegrass进行Mac OS X的Cocoa编程,并且遇到了一些我不明白的事情。在页150-151,他创建一个对象,释放它,然后再次使用它。例如:
- (void) someMethod
{
NSMutableArray *array = [[NSMutableArray alloc] init];
NSString *str = [[NSString alloc] initWithString:"This is a string."];
[array addObject:str];
[str release];
int x = [array indexOfObjectIdenticalTo:str];
NSLog(@"the index of %@ in the array is %d", str, x);
}
如果对象已被释放,这是如何工作的?在方法完成或设置为nil
之后,对象是否仍然有效?
答案 0 :(得分:2)
将它添加到数组会增加引用计数,因此显式释放将引用计数保留为1.这不是一个好习惯(在完成引用之前不应该释放一些东西),但在这种情况下这是安全的。