释放后使用对象?

时间:2009-05-12 01:47:59

标签: objective-c cocoa

我正在通过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之后,对象是否仍然有效?

1 个答案:

答案 0 :(得分:2)

将它添加到数组会增加引用计数,因此显式释放将引用计数保留为1.这不是一个好习惯(在完成引用之前不应该释放一些东西),但在这种情况下这是安全的。