本地变量在ARC下会导致内存泄漏吗?

4
在这3种情况下,我会出现内存泄漏吗?
  • No __strong and no set to nil

    - (void)function {
          NSString *string = [[NSString alloc] initWithString: @"Hello World"];
    }
    
  • No set to nil but use __strong

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

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

使用自动引用计数(ARC)时,如果我不设置任何关键字,我默认变量是__strong吗?


更短的写法是 NSString *string = @"Hello World";。在方法中不需要其他操作。 - ott--
1个回答

6
如果不指定所有权限定符,那么它隐含地是__strong。然后,在声明变量的局部范围结束时,无论您是否将变量设置为nil,编译器都会插入一个释放。因此,在所有三种情况下,您的本地变量都会被释放 -- 没有泄漏。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接