アプリケーションがバックグラウンドになると、NSCache がすべてのオブジェクトを削除することに気付きました。それは期待される動作ですか?それを回避する方法はありますか?
アプリがバックグラウンドになった直後ではなく、デバイスのメモリが不足したときにオブジェクトを削除することを期待しています。
有効な代替手段を知っていますか?
私の場合、NSCache に保存されているオブジェクトが NSDiscardableContent プロトコルに準拠していないときに発生しました。上記のプロトコルを追加すると、アプリがバックグラウンドに入ったときのオブジェクトの追い出しがなくなります。
さらに、ここで見つけた NSCache.m のソースに基づいて、アプリがより多くのメモリを必要とし、その要素の一部を削除する必要がある場合でも、NSDiscardableContent プロトコルに準拠しないオブジェクトは実行時に削除されません。おそらくそれが、アプリがバックグラウンドに入るときに非 NSDiscardableContent オブジェクトが削除される理由です。
NSCache は相変わらずばかげています。私は、SDK の初日から iOS 開発者でしたが、今日になってようやく、この役立つ記事を見つけました。
何年もの間、通常のキャッシュと同じように機能していると思っていましたが、違います! もう二度と使いません。
この関連投稿のコメントは、アプリがバックグラウンドに入ると NSCache がクリアされることを示しています。 NSCache がデータを削除していない