你如何深复制一个多维的NSMutableArray及其内容?(How do you deep cop

2019-09-17 23:29发布

我现在有一个三维的NSMutableArray,我需要深拷贝。 然而,似乎下面的代码导致它和它的内容成为不可变的,因为它会导致NSInvalidArgumentException当我试图从它删除任何对象。

NSMutableArray* copy = [[[NSMutableArray alloc] initWithArray:input copyItems:YES] autorelease];

我怎么能深层复制,而不会导致它成为不可改变的阵列?

Answer 1:

从上市,

一成不变的类的副本imlementation通常返回相同的对象 - 因为它是不可变的没有必要有一个“真实”的副本。 但你不必担心这一点。

以上从http://lists.apple.com/archives/cocoa-dev/2008/May/msg00172.html

在添加之前,你的所以请确保input数组,即输入数组转换为可变的副本,然后调用该方法。

码:

NSMutableArray* mutableInput = [input mutableCopy];
NSMutableArray* copy = [[[NSMutableArray alloc] initWithArray:mutableInput copyItems:YES]autorelease];


Answer 2:

使用NSCoding

在.h文件中@interface类名:NSObject的

在.m文件

  • (ID)copyWithZone:(NSZone *)区{}


文章来源: How do you deep copy a multidimensional NSMutableArray and its contents?