2017-04-07 7 views
0

私は、Instagramと同様に、どのタブが選択されているかに基づいて様々なコレクションビューに最初に表示される高解像度画像を多く含んでいます。すべての画像がアプリに付属していますが、UMLmageを単純なNSMutableDictionaryで非同期にキャッシュすると、毎回それらを読み込むことに反対して、コレクションビューのUIが1トンアップします。今は、複数のビューコントローラ/コレクションビューに分散されていて、さまざまなサイズのものであっても、アプリケーション内のすべてのイメージを処理する1つのイメージキャッシュを持っています。これらのView Controllerのいずれかにメモリ警告が発生すると、キャッシュはクリアされます。単一対複数のUIImageキャッシュ

私の質問はこれが理想的な設定ですか、それぞれのコレクションビュー内の画像のみを扱う各ビューコントローラに対して別々のイメージキャッシュを持つ方が理にかなっていますか?私の考えは、ビューコントローラ#3がメモリ警告を受け取った場合、その画像キャッシュだけがクリアされ、ビューコントローラ#1と#2が滑らかなUIを保持できるようになります。

答えて

0

は、あなたが何かをキャッシュしたい場合、より良い何かが、右のオブジェクトは、それが辞書として働き、NSCacheであり、それは多くの利点があります。

NSCacheクラスは、様々な自動立ち退きポリシーを組み込みました、 は、キャッシュがシステムのメモリを多用しないようにします。他のアプリケーションで のメモリが必要な場合、これらのポリシーによって、メモリ内のフットプリントを最小限に抑えて、キャッシュから一部の アイテムが削除されます。
を追加して、 キャッシュをロックしないで別のスレッドからキャッシュ内のアイテムをクエリできます。
NSMutable Dictionary オブジェクトとは異なり、キャッシュは入れ子にされたキーオブジェクトをコピーしません。

あなたの質問について具体的な回答はないと思います。キャッシュを正しく管理している場合は、1つしか使用できませんが、情報の共有を避けるために、私が使用するコレクションビューごとに1つ作成します。

関連する問題