2

任何人都可以推荐一种使用 NSKeyArchiver 将数据附加到存档的内存高效方法吗?

我有一个数组,它收集对象并将它们作为内存缓存提供给应用程序。为了避免消耗越来越多的内存,我想经常将此数组存档到一个文件中,保留一个缓存文件(而不是创建单独的缓存文件)。

一种方法是将现有文件取消归档到 tempArray,而不是将现有数组中的项目添加到其中:

[tempArray addObjectsFromArray:array];

然后存档数组:

[NSKeyedArchiver archiveRootObject:tempArray toFile:file];

这种方法有其自身的目的,因为您必须在存档新数据之前将整个存档读取到内存中。

任何人都可以推荐一个更优雅的解决方案?

4

1 回答 1

0

我认为这是不可能的,至少对于 NSKeyedArchiver。由于键在每个作用域层次结构中必须是唯一的,因此如果不首先读取存档,就不可能保证这一点。如果您刚刚插入一个带有新存档对象的节点,并且该节点的密钥已经存在于存档的早期,那么结果将是一个损坏的存档。

显然,如果你自己编写了 NSCoder 协议的实现,你可以让它随心所欲地工作。然而,编写 NSCoder 并非易事。

于 2011-06-27T21:12:12.670 回答