局部变量是否会导致ARC内存泄漏?

时间:2012-04-19 21:59:32

标签: objective-c automatic-ref-counting

在这3例中我会有内存泄漏吗?

  • __ strong 且未设置为nil

    - (void)function {
          NSString *string = [[NSString alloc] initWithString: @"Hello World"];
    }
    
  • 没有设置为nil但使用 __ strong

    - (void)function {
        __strong NSString *string = [[NSString alloc] initWithString: @"Hello World"];
    }
    
  • __ strong ,但设置为

    - (void)function {
        NSString *string = [[NSString alloc] initWithString: @"Hello World"];
        string = nil;   
    }
    

使用自动引用计数(ARC),如果我没有设置任何关键字,我认为该变量是 __ strong

1 个答案:

答案 0 :(得分:6)

如果您未指定所有权限定符,则隐式__strong。然后,在声明变量的本地作用域的末尾,无论是否将变量设置为nil,编译器都会插入一个释放。

因此,在所有三种情况下都释放了您的局部变量 - 没有泄漏。