私は現在、画像のダウンロードとスクロール ビュー内の約 20 の画像の表示を組み込んだアプリケーションに取り組んでいます。ダウンロードはうまく機能し、NSData から UIImage への変換もうまくいきます。ただし、複数のダウンロードが同時に終了した場合、つまり UIImageView の複数の画像プロパティが近接して設定されている場合、1 秒のラグ スパイクが発生します。このラグを減らすにはどうすればよいですか?
ダウンロードが完了したときに呼び出される私のコードは次のとおりです。これは、1 秒間隔で 20 回程度呼び出される可能性があります。
// _imageDataQueue is a dispatch_queue created in the init method
dispatch_async(_imageDataQueue, ^{
// data is an NSData object set when the download completes
UIImage *image = [UIImage imageWithData:data];
dispatch_async(dispatch_get_main_queue(), ^{
if (image) {
// this is stripped down, but it is just some simple logic
// and eventually the image is set
[theImageView setImage:image];
} else {
// called if there is no image and theImageView's image is set
// to a cached image
[theImageView setImage:someCachedUIImage];
}
});
});
おそらく、setImage 呼び出しをキューに入れることができますか? これを修正する最善の方法は何ですか?