在ARC中,重新初始化的对象的内存会发生什么?

时间:2013-08-09 20:06:09

标签: ios memory-management automatic-ref-counting

假设我有一个名为test的方法。

test{
    NSString *answer = [[NSString alloc] initWithString:@"VALUE 1"];
    answer = [[NSString alloc] initWithString:@"VALUE 2"];
}

当答案重新初始化时,ARC下第一次初始化的内存会发生什么?

1 个答案:

答案 0 :(得分:2)

释放第一个字符串(在[[NSString alloc] initWithString:@"VALUE 1"];中创建的字符串)

在这种情况下,

answer是具有所有权限定条件的对象。因此,从docs开始,当您分配到answer时会发生这种情况:

  

对于__strong对象,首先保留新的指针;第二,左值加载了原始语义;第三,新的指针被存储到具有原始语义的左值中;最后,老指针被释放了。这不是原子地执行的;必须使用外部同步,以便在并发加载和存储时使其安全。