我环顾四周,有人说[aMutableArray copyWithZone:nil]作为深拷贝。但我试过,它似乎是一个浅拷贝。
现在我手动做一个for循环的副本:
//deep copy a 9*9 mutable array to a passed-in reference array-deepMucopy : (NSMutableArray*) array toNewArray : (NSMutableArray*) arrayNew { [arrayNew removeAllObjects];//ensure it's clean for (int y = 0; y<9; y++) { [arrayNew addobject:[NSMutableArray new]]; for (int x = 0; x<9; x++) { [[arrayNew objectAtIndex:y] addobject:[NSMutableArray new]]; NSMutableArray *aDomain = [[array objectAtIndex:y] objectAtIndex:x]; for (int i = 0; i<[aDomain count]; i++) { //copy object by object NSNumber* n = [NSNumber numberWithInt:[[aDomain objectAtIndex:i] intValue]]; [[[arrayNew objectAtIndex:y] objectAtIndex:x] addobject:n]; } } }}
但我想要一个更清洁,更简洁的解决方案。
解决方法 作为 Apple docs状态,If you only need a one-level-deep copy,you can explicitly call for one…
06000
上面的代码创建一个新的数组,其成员是旧数组的成员的浅拷贝。
注意,如果你需要深度复制一个完整的嵌套数据结构 – 链接的苹果文档称之为“真正的深拷贝” – 然后这种方法是不够的 – 请看这里的其他答案。
@H_404_2@ 总结以上是内存溢出为你收集整理的objective-c – 深度复制NSArray全部内容,希望文章能够帮你解决objective-c – 深度复制NSArray所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)