Core Data とその他のオブジェクトを Caches ディレクトリに保存しています。削除しても問題ありませんが、アプリの実行中に消えてしまうと面倒です。これは実際に起こるのでしょうか、それとも、ファイルが作成されると、アプリのランタイムの残りの間そこにあると想定できますか?
2 に答える
表 1-3は次のように述べています。
...システムのディスク容量が非常に少ない場合、まれにシステムが Caches ディレクトリを削除することがあります。これは、アプリの実行中に発生することはありません。
それはいいですね :-)
NSCache クラスにはさまざまな自動削除ポリシーが組み込まれており、システムのメモリを過度に使用しないようになっています。他のアプリケーションがメモリを必要とする場合、システムはこれらのポリシーを自動的に実行します。これらのポリシーが呼び出されると、キャッシュからいくつかのアイテムが削除され、メモリ フットプリントが最小限に抑えられます。
ドキュメントを見ることができます:http://developer.apple.com/library/mac/#technotes/CachingPurgeableMemory/Introduction/Introduction.html
キャッシュにはコスト制限があり、ファイルがしきい値よりも大きい場合、自動的に削除されます。countLimit
しかし、プロパティでそれらを制御できtotalCostLimit
、コストでオブジェクトを追加できますsetObject:forKey:cost:
。
また、自分でオブジェクトを追い出すこともできます。NSDiscardableContent プロトコルの実装をオブジェクトと に追加しsetEvictsObjectsWithDiscardedContent:
ますYES
。
ただし、キャッシュが大きい場合、アプリがバックグラウンドで実行されている場合、キャッシュはオブジェクトの一部 (おそらくすべて) を削除します。