4

在这 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

4

1 回答 1

6

如果您不指定所有权限定符,则它是隐含的__strong. 然后,在声明变量的本地范围的末尾,编译器会插入一个释放,无论您是否将变量设置为 nil。

所以,你的局部变量在所有三种情况下都被释放了——没有泄漏。

于 2012-04-20T00:48:47.120 回答