我只想知道如何复制NSMutableArray,这样当我更改数组时,我对它的引用不会改变。如何复制数组?
答案 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
。