サーバーに接続して画像のリストを取得し、それらをダウンロードしてグリッドに表示するアプリを作成しています。
このプロセスのパート1は、サーバーに接続し、画像のURLのリストを要求するクライアントクラスによって実行されます。ビューコントローラでこれを行い、ビューに渡します。
パート2は、私が作成した画像キャッシュクラスによって実行されます。このクラスは、各画像のURLを取得し、アプリがそれをダウンロードして以前に保存したかどうかを確認します。その場合、ファイルシステムから画像を取得して返します。それ以外の場合は、画像を非同期でダウンロードして保存します。
私が今している方法では、ビューコントローラーが画像識別子のリストを取得してビューに渡します。次に、ビューは各画像の画像ビューを作成してプレースホルダー画像で埋め、次に各画像の画像キャッシュを要求し、ダウンロード時に画像を埋めます。
ビューの描画関数自体に、画像をダウンロードするためのこのロジックがあるのは悪い設計ですか?私のビューは表示されるはずのデータを取得するための作業を行っているため、MVCの違反のように感じます。ただし、実際のネットワーキングは他の場所(イメージキャッシュクラス内)で行われており、ビューが単にを呼び出すように抽象化されています[ImageCache getImageForIdentifier:... completionHandler:...]
。