我现在有一个三维的NSMutableArray,我需要深拷贝。 然而,似乎下面的代码导致它和它的内容成为不可变的,因为它会导致NSInvalidArgumentException当我试图从它删除任何对象。
NSMutableArray* copy = [[[NSMutableArray alloc] initWithArray:input copyItems:YES] autorelease];
我怎么能深层复制,而不会导致它成为不可改变的阵列?
我现在有一个三维的NSMutableArray,我需要深拷贝。 然而,似乎下面的代码导致它和它的内容成为不可变的,因为它会导致NSInvalidArgumentException当我试图从它删除任何对象。
NSMutableArray* copy = [[[NSMutableArray alloc] initWithArray:input copyItems:YES] autorelease];
我怎么能深层复制,而不会导致它成为不可改变的阵列?
从上市,
一成不变的类的副本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];
使用NSCoding
在.h文件中@interface类名:NSObject的
在.m文件