Matsushita's Blog

NSCacheのリファレンスを読む

NSCacheの公式リファレンス

NSCache - Foundation | Apple Developer Documentation

What is NSCache

NSCacheのオブジェクトはmutable(変わりうる)なデータの集まりでkey-valueによって保存される。NSDictionaryオブジェクトに似ている。データの追加や削除のインタフェースが備わっており、キャッシュ内のコストに応じてオブジェクトの破棄の設定ができる。

特徴

  • NSCacheは様々なタイプのauto-evictionが実装されている。auto-evictionとはメモリの上限を考えて、キャッシュ内に必要なデータを保存し、不要なデータを追い出す事である。
  • 自分自身でキャッシュをロックせずに、他のスレッドからデータの追加、削除ができる。
  • NSMutableDictionaryオブジェクトと違って、キャッシュは保存されたオブジェクトのキーをコピーしない

使い時

一般的に、生成するのにコストが掛かるようなオブジェクトを一時的に保存させるために使用する。オブジェクトを再利用すれば、パフォーマンスに良い影響を与える。なぜならば、再計算しないで済むから。もし、メモリがいっぱいであればアプリケーションに支障が出ないようにデータを破棄させる。破棄されたオブジェクトは必要な時に再計算させる必要がる。

cache evictionを実装するためにNSDiscardableContentというプロトコルが採用されている。デフォルトでは、そのオブジェクトが破棄されたら自動的にキャッシュも破棄されるようになっている。