如何深度复制多维 NSMutableArray 及其内容



我目前有一个三维NSMutableArray,我需要深度复制。但是,似乎以下代码导致它及其内容变得不可变,因为当我尝试从中删除任何对象时,它会导致 NSInvalidArgumentException。

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

如何在不导致数组变为不可变的情况下深层复制数组?

从列表中,

不可变类的副本执行通常返回相同的对象 - 因为它是不可变的,所以不需要有一个"真实的"复制。但是您不必担心这一点。

以上来自 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 文件中

  • (id)copyWithZone:(NSZone *)zone{}

最新更新