私のアプリでは、UITableViewCellsの画像を次のように非同期で読み込んでいます。
-(void) loadImage:(NSString *)urlString cell:(UITableViewCell *)cell {
UIImageView *iv = cell.imageView;
UIImage *image = [imageCache objectForKey:urlString];
if(!image) {
NSURL *url = [NSURL URLWithString:urlString];
image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]];
if(image) {
[imageCache setObject:image forKey:urlString];
}
}
dispatch_async(dispatch_get_main_queue(), ^{
iv.image = image;
[cell addSubview:iv];
});
}
すべてのイメージのロードが完了する前にテーブルビューが更新されると、iv.image = image;
ivの割り当てが解除されたため、例外がスローされます。割り当て解除されたセルの画像を設定しようとしないようにするための最良の方法は何ですか?テーブルビューがリロードされたときに、長引く非同期ロードを強制終了する方法はありますか?