我对ARC如何工作有点困惑,我知道有自动引用计数但是这个功能甚至可以用于分配原始实例变量(不使用属性)。
例如,如果我有一个实例变量arr
:
@interface TestClass : NSObject {
NSArray *arr;
}
现在,如果在方法内部,我使用自动释放的NSArray
:
- (IBAction)test {
arr = [NSArray arrayWithObject:@"TEST"];
}
这个阵列会发生什么?它是否只是神奇地保留它,直到arr
重新分配给其他东西?
现在,如果我做了类似的事情:
self.arr = [NSArray arrayWithObject:@"TEST"];
如果强弱对弱会发生什么?
答案 0 :(得分:18)
是的,ARC适用于原始的ivar访问。就像局部变量一样,除非用__strong
或__weak
修饰,否则ivars隐含__unsafe_unretained
。因此,默认情况下,它们的行为类似于已标记为strong
(或retain
的属性,其中ARC是strong
的同义词。)