我目前有一个三维NSMutableArray,我需要进行深度复制。然而,下面的代码似乎导致它和它的内容变得不可变,因为当我试图从它中删除任何对象时,它会导致NSInvalidArgumentException。
NSMutableArray* copy = [[[NSMutableArray alloc] initWithArray:input copyItems:YES] autorelease];如何才能在不导致数组不可变的情况下对数组进行深度复制?
发布于 2012-06-10 18:50:58
从列表中,
不可变类的复制实现通常返回相同的对象-因为它是不可变的,所以没有必要有一个“真正的”副本。但是你不需要担心这个。
以上来自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];发布于 2012-06-10 22:38:34
使用NSCoding
在接口文件@ .h中,类名: NSObject
在.m文件中
https://stackoverflow.com/questions/10968021
复制相似问题