0

copy 方法只做一个浅拷贝,即集合本身的一个新拷贝,而不是里面存储的所有对象。我现在正在学习的书建议使用归档来创建深拷贝,即使用 NSKeyedArchiver 将集合对象保存到 NSData 对象,然后使用 NSKeyedUnarchiver 将其加载回另一个集合对象。这种方法有效,但我不确定它处理大型集合对象的效率如何。有没有其他可能效果更好的深度复制方法?

好吧,这就是我想知道的:

  1. 任何涉及较少编码的方法?
  2. 任何一种 CPU 效率更高的方法?
  3. 有什么方法可以同时实现?:P
4

2 回答 2

3

@dasblinkenlight 说了什么……

NSKeyedArchiver大型对象图设计。如果您对对象图有高度专业化的知识,当然可以构建更高效的东西,但除非您遇到非常特殊的问题,否则这几乎总是错误的。

你的书是对的。使用归档器创建深层副本。

于 2012-07-24T15:05:10.920 回答
1

我不确定这些数字,但这NSKeyedArchiver条路线的计算成本不会很高。它看起来很长,但实际上并不比定制的东西效率低很多(就像@Rob Napier 说的那样)。但是,它的可重用性要高得多。

当仍有疑问时,一个有趣的实验可能是一个大而简单的数据集的深层副本,并针对定制的东西进行计时。

于 2012-07-25T06:18:26.943 回答