假设我有一个名为test的方法。
test{
NSString *answer = [[NSString alloc] initWithString:@"VALUE 1"];
answer = [[NSString alloc] initWithString:@"VALUE 2"];
}
当答案重新初始化时,ARC下第一次初始化的内存会发生什么?
答案 0 :(得分:2)
释放第一个字符串(在[[NSString alloc] initWithString:@"VALUE 1"];
中创建的字符串)
answer
是具有强所有权限定条件的对象。因此,从docs开始,当您分配到answer
时会发生这种情况:
对于__strong对象,首先保留新的指针;第二,左值加载了原始语义;第三,新的指针被存储到具有原始语义的左值中;最后,老指针被释放了。这不是原子地执行的;必须使用外部同步,以便在并发加载和存储时使其安全。