“保留”NSArray或NSMutableArray会发生什么?

时间:2010-10-26 07:40:33

标签: iphone nsarray retain

在源代码中

@property(retain) NSString* str;
@sythesize str;
self.str = newStr;

我明白以下情况会发生

if( str != newStr ){
     [str release];
     str = [newStr retain]; 
}

那么NSArray或NSMutableArray的案例怎么样?看起来它很复杂,应该考虑浅拷贝和深拷贝。

1 个答案:

答案 0 :(得分:2)

它是一样的。设置属性只会更改该数组的所有权,而不会更改数组的内容(内容由同一个数组拥有)。因此,只有数组需要-retain'。

实际上,运行时并不关心属性的特定Objective-C类型。相同的setter过程将应用于每个@property(retain)属性。

要使setter执行浅层复制,请将其设为@property(copy)。没有办法让它深刻复制。

相关问题