サーバーから画像をキャッシュし、アプリでスライドショーの並べ替えとして表示することを計画しています。画像を非同期で読み込んでいます。
私には2つの選択肢があります:
- 画像をファイルとしてキャッシュし、必要に応じて使用します。
- 画像オブジェクトをメモリにキャッシュし、必要に応じて使用し、アプリケーションの終了時にファイルに書き込みます。
どちらが良いでしょうか?
画像のキャッシュに関して何か提案があれば教えてください。
サーバーから画像をキャッシュし、アプリでスライドショーの並べ替えとして表示することを計画しています。画像を非同期で読み込んでいます。
私には2つの選択肢があります:
どちらが良いでしょうか?
画像のキャッシュに関して何か提案があれば教えてください。
2 番目のアプローチには 2 つの大きな欠陥があります。
画像をダウンロードした直後にファイルに保存し、目に見える遅延なしに表示する必要がある適切な数の画像をメモリに保持することをお勧めします(必要に応じて余分な画像をロードし、不要な画像を破棄します)。
最初のオプションをお勧めします。データ サイズによってメモリ サイズが増加する場合など、より柔軟に対応できます。
私は次のようにします:キャッシュされた画像(UIImageオブジェクトとして)を含むNSMutableDictionaryを用意します。画像がキャッシュにない場合は、ファイルとして利用できるかどうかを確認してください。ファイルとして利用できない場合は、ロードして辞書に入れ、ファイルにも書き込みます。
ファイルの書き込み先については、NSTemporaryDirectory() を使用するか、NSLibraryDirectory内にディレクトリを作成できます(場所を特定するにはNSSearchPathForDirectoriesInDomainsを使用します)。後者には、iTunesのバックアップに含まれるという利点/欠点があります(それが利点であるかどうかは、ユースケースによって異なります)。Library ディレクトリを使用することは、バックアップされているが iTune のファイル交換対象 (Documents ディレクトリ) に表示されないデータを格納するために Apple が推奨する方法です。
キャッシュを処理するためにEGOImageViewを使い始めました。非常に用途が広く、キャッシュの複雑さを処理します。
http経由で画像をプルするのに非常にうまく機能します。EGO開発者のWebサイトで見つけることができます。