グランドセントラルディスパッチを使用して遅延ロードされている画像を含むテーブルビューがあります。内部に2つのシリアルキューがある非同期キューを使用しました。最初のキューは画像をダウンロードし、2番目のキューは画像をセルに設定します。このメソッドは、スクロールで遅れる動作をするようです。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
__block UIImage *image = nil;
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:artist.imImage]]];
});
dispatch_sync(dispatch_get_main_queue(), ^{
cell.artistImage.image = image;
});
});
次に、単一の非同期キューを使用してイメージをダウンロードし、メインキューを内部に取得してイメージを設定しようとしました。私でさえ、この方法があまり適しているとは感じていません。ここで何かが足りないと思います。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:artist.imImage]]];
dispatch_async(dispatch_get_main_queue(), ^{
cell.artistImage.image = image;
});
});
ここで何かが足りないようなものですか、それとも他の問題ですか?