2011-06-27 10 views
2

NSKeyArchiverを使用してアーカイブにデータを追加するメモリ効率的な方法をお勧めしますか?iOS:アーカイブに追加する

私はオブジェクトを収集し、それらをメモリ内キャッシュとしてアプリケーションで利用できるようにする配列を持っています。より多くのメモリを食べるのを避けるために、この配列をファイルに保存したいと思います。別々のファイルを作成するのではなく、1つのキャッシュファイルを保持します。

[tempArray addObjectsFromArray:array];

をして、アーカイブ配列:

[NSKeyedArchiver archiveRootObject:tempArray toFile:file]; これを行うには

一つの方法は、それを既存のアレイに項目を追加するよりも、tempArrayに出たファイルをアーカイブ解除だろう

このアプローチは、新しいデータをアーカイブする前にアーカイブ全体をメモリに読み込む必要があるため、独自の目的に勝るものです。

もっと洗練されたソリューションをお勧めしますか?

答えて

0

少なくともNSKeyedArchiverではこれは可能ではないと思います。各スコープ階層内のキーmust be uniqueがあるため、最初にアーカイブを読み取らないと保証できません。新しいアーカイブされたオブジェクトを持つノードを挿入したばかりの場合、結果は破損したアーカイブになり、そのノードのキーはアーカイブの前にすでに存在しています。

明らかに、NSCoderプロトコルの独自の実装を書いていれば、好きなように動作させることができます。しかし、NSCoderを書くことは非trivalです。

関連する問題