したがって、キャッシュされたデータを保持するために NSCache オブジェクトは存続する必要があります。つまり、データの格納に使用されたのと同じオブジェクトを使用して、データを取得する必要があります。
- 質問は、私のデータを保持するシングルトン NSDictionary で NSCache を使用するポイントは何ですか?
- NSCache の推奨される使用方法は何ですか? 静的フィールド? それを継承してシングルトンを作成しますか?
したがって、キャッシュされたデータを保持するために NSCache オブジェクトは存続する必要があります。つまり、データの格納に使用されたのと同じオブジェクトを使用して、データを取得する必要があります。
キャッシュには、汎用目的のコレクションとして使用するのにはあまり適していませんが、キャッシュとしてうまく機能させる多くの癖があります。ドキュメントに記載されているように:
NSCache オブジェクトは、いくつかの点で他の可変コレクションとは異なります。
- NSCache クラスにはさまざまな自動削除ポリシーが組み込まれており、システムのメモリを過度に使用しないようになっています。他のアプリケーションがメモリを必要とする場合、システムはこれらのポリシーを自動的に実行します。これらのポリシーが呼び出されると、キャッシュからいくつかのアイテムが削除され、メモリ フットプリントが最小限に抑えられます。
- キャッシュを自分でロックしなくても、さまざまなスレッドからキャッシュ内のアイテムを追加、削除、およびクエリできます。
- NSCache オブジェクトから何かを取得すると、自動解放された結果が返されます。
- NSMutableDictionary オブジェクトとは異なり、キャッシュはそこに置かれたキー オブジェクトをコピーしません。
これらの機能は NSCache クラスに必要です。キャッシュは、メモリを解放するために呼び出された場合、バックグラウンドで自動的に非同期に変更される可能性があるためです。