これは、そのインデックスパスの画像が存在しない限り、特定のテーブル行にプレースホルダーを表示することになっています。下にスクロールすると、以前の indexPath の画像が解放されずにデフォルトで読み込まれます。以前に誰かが同じ問題で私を助けてくれたことは知っていますが、これは画像をキャッシュすることの重要性に気付く前のことです。私の customCell メソッドでは、UIImage プロパティを strong に設定し、viewDidUnload のイメージを解放します。
NSString *imagename = [_imageCache objectForKey:indexPath];
UIImage *preview = [_imageCache objectForKey:imagename];
if (preview)
{
[[cell myImageView] setImage:preview];
}
else
{
[[cell myImageView] setImage:[UIImage imageNamed:@"CellLogo.png"]];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
// __block UIImage *preview = nil;
UIImage *preview = [UIImage imageWithData:object.iG];
// }
if (preview)
{
dispatch_async(dispatch_get_main_queue(), ^{
// if (cell)
[[cell myImageView] setImage:preview];
});
[_imageCache setObject:preview forKey:imagename];
}
});
}