iOS 5实例变量

use*_*880 14 iphone ios ios5 automatic-ref-counting

我对ARC如何工作有点困惑,我知道有自动引用计数但是这个功能甚至可以用于分配原始实例变量(不使用属性).

例如,如果我有一个实例变量arr:

@interface TestClass : NSObject {
   NSArray *arr;
}
Run Code Online (Sandbox Code Playgroud)

现在如果在方法内部我使用自动释放分配它NSArray:

- (IBAction)test {
    arr = [NSArray arrayWithObject:@"TEST"];
 }
Run Code Online (Sandbox Code Playgroud)

这个阵列会发生什么?是否只是神奇地保留它,直到arr被重新分配给其他东西?

现在,如果我做了类似的事情:

self.arr = [NSArray arrayWithObject:@"TEST"];
Run Code Online (Sandbox Code Playgroud)

如果它强而弱,会发生什么?

Lil*_*ard 18

是的,ARC适用于原始的ivar访问.就像局部变量一样,ivars是隐式的,__strong除非用__weak或装饰__unsafe_unretained.因此,默认情况下,它们会像被标记的属性一样strong(或者retain,在ARC下是同义词strong).