有人建议使用NSKeyArchiver以高效内存的方式将数据附加到存档吗?
我有一个数组,它收集对象并将它们作为内存缓存提供给应用程序。为了避免吃掉越来越多的内存,我希望每隔一段时间将这个数组存档到一个文件中,保留一个缓存文件(而不是创建单独的缓存文件)。
执行此操作的一种方法是将现有文件解压缩到tempArray,而不是将现有数组中的项目添加到其中:
[tempArray addObjectsFromArray:array];
然后归档数组:
[NSKeyedArchiver archiveRootObject:tempArray toFile:file];
这种方法超出了自己的目的,因为在归档新数据之前必须将整个存档读取到内存中。
任何人都可以推荐更优雅的解决方案吗?
答案 0 :(得分:0)
我不认为这是可能的,至少对于NSKeyedArchiver。由于每个范围层次结构中的键must be unique,如果不首先读取存档,则无法保证。如果您刚刚插入了一个带有新存档对象的节点,那么结果将是一个损坏的存档,并且该节点的密钥早先已存在于存档中。
显然,如果您编写了自己的NSCoder协议实现,那么您可以随心所欲地使用它。但是编写NSCoder并不是一件轻而易举的事。