代码之家  ›  专栏  ›  技术社区  ›  James Sumners Gavriel

释放后使用对象?

  •  0
  • James Sumners Gavriel  · 技术社区  · 15 年前

    我正在经历Aaron Hillegrass为MacOSX编写的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 回复  |  直到 15 年前
        1
  •  2
  •   Paul Tomblin    15 年前

    将其添加到数组将增加引用计数,因此显式发布将保留引用计数为1。这不是一个好的实践(在引用完某个东西之前不应该释放它),但在这种情况下,它是安全的。