2

NSKeyArchiver を使用してアーカイブにデータを追加するメモリ効率の良い方法を推奨できる人はいますか?

オブジェクトを収集し、メモリ内キャッシュとしてアプリで使用できるようにする配列があります。ますます多くのメモリを消費するのを避けるために、(個別のキャッシュ ファイルを作成するのではなく) 単一のキャッシュ ファイルを保持して、この配列をファイルに頻繁にアーカイブしたいと考えています。

これを行う 1 つの方法は、既存の配列内の項目を追加するよりも、既存のファイルを tempArray に展開することです。

[tempArray addObjectsFromArray:array];

次に、配列をアーカイブします。

[NSKeyedArchiver archiveRootObject:tempArray toFile:file];

このアプローチは、新しいデータをアーカイブする前にアーカイブ全体をメモリに読み込む必要があるため、本来の目的よりも優先されます。

誰でもよりエレガントなソリューションを推奨できますか?

4

1 に答える 1

0

少なくとも NSKeyedArchiver では、これは不可能だと思います。キーは各スコープ階層内で一意でなければならないため、最初にアーカイブを読み取らない限り、それを保証することは不可能です。アーカイブされた新しいオブジェクトを含むノードを挿入したばかりで、そのノードのキーがアーカイブ内にすでに存在していた場合、結果としてアーカイブが破損します。

明らかに、NSCoder プロトコルの独自の実装を作成した場合は、好きなように動作させることができます。ただし、NSCoder の作成は簡単ではありません。

于 2011-06-27T21:12:12.670 に答える