复制方法只生成浅拷贝,即集合本身的新副本,而不是存储在内部的所有对象。我正在研究的这本书建议使用archive来创建深层拷贝,即使用NSKeyedArchiver将集合对象保存到NSData对象,然后使用NSKeyedUnarchiver将其加载回另一个集合对象。这种方法有效,但我不确定处理大型集合对象的效率如何。还有其他深度复制方法可能效果更好吗?
好的,这就是我想知道的:
答案 0 :(得分:3)
@dasblinkenlight说的是什么......
NSKeyedArchiver
特别针对大型对象图设计。如果您对对象图具有高度专业化的知识,那么当然可以构建更高效的东西,但除非您遇到非常特殊的问题,否则这几乎总是错误的。
你的书是对的。使用存档程序创建深层副本。
答案 1 :(得分:1)
我不确定数字,但NSKeyedArchiver
路线的计算成本并不高。看起来好像很长,但实际上并不比定制的东西效率低得多(如@Rob Napier所说)。然而,它更多可重复使用。
如果仍有疑问,一个有趣的实验可能是一个大而简单的数据集的深层副本,以及与定制内容相关的时间。