Objective-C数组与字典的深复制方法

数组和字典的深复制在开发中还蛮常见的,尤其当你不想动到原始数据时。Objective-C里的方式也挺有讲究的,是要用到NSCopying协议。要注意哦,不是所有的复制都是“深”的。你得确保你的自定义对象也实现了copyWithZone:,不然只能复制引用,动了副本等于动了原件,那就白复制了。

数组的复制用copy或者mutableCopy都行,但关键看里面的内容是不是也支持复制。比如你有个NSArray里全是模型对象,那这些模型也得实现NSCopying,要不然只是浅复制。响应也快,代码也简单,但前提是你准备工作得做对。

字典这块也差不多,用mutableCopy复制出个可改的版本挺实用的。尤其是你想在不影响原始NSDictionary的情况下加点字段啥的。不过哦,还是那句话,里面的内容最好也都支持深复制,不然你改了副本,原始对象也跟着变,可就麻烦了。

性能方面确实得留点心。深复制开销不小,毕竟是递归复制,每个对象都得来一份。所以用的时候还是得看场景,真有必要再搞深复制。不然你还没写完逻辑,内存就先吃不消了。

如果你平时用Objective-C或者Swift写项目,遇到要拷贝数组、字典、模型的情况,可以参考下这些做法。还有几个不错的文章也可以看看,像Objective-C 数组操作精要这种就挺实用的。

zip 文件大小:3.21KB