如何复制NSMutableArray

时间:2011-04-23 19:01:52

标签: iphone xcode copy nsmutablearray deep-copy

我只想知道如何复制NSMutableArray,这样当我更改数组时,我对它的引用不会改变。如何复制数组?

1 个答案:

答案 0 :(得分:47)

有多种方法可以做到:

NSArray *newArray = [NSMutableArray arrayWithArray:oldArray];

NSArray *newArray = [[[NSMutableArray alloc] initWithArray:oldArray] autorelease];

NSArray *newArray = [[oldArray mutableCopy] autorelease];

但这些都会创建浅层副本

编辑:如果您正在使用ARC,只需删除对autorelease的来电。)

对于深层副本,请改用:

NSMutableArray *newArray = [[[NSMutableArray alloc] initWithArray:oldArray copyItems:YES] autorelease];

值得注意:由于显而易见的原因,后者将要求所有数组的元素对象实现NSCopying