objective-c – 深度复制NSArray

objective-c – 深度复制NSArray,第1张

概述有没有任何内置的函数,允许我深复制一个NSMutableArray? 我环顾四周,有人说[aMutableArray copyWithZone:nil]作为深拷贝。但我试过,它似乎是一个浅拷贝。 现在我手动做一个for循环的副本: //deep copy a 9*9 mutable array to a passed-in reference array-deepMuCopy : (NSMut @H_404_2@ 有没有任何内置的函数,允许我深复制一个NSMutableArray?

我环顾四周,有人说[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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1049246.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存