ですから、これを説明するのは難しいかもしれませんが、私は最善を尽くします。この問題も解決するためにいくつかの手順を踏む可能性があります。
このコードはtableviewcellに表示されるため、セルが画面に表示されるたびに実行されます。
[cell.cellContent.thumbnails removeAllObjects];
if ([self.cellThumbnailCache objectForKey:[NSNumber numberWithInt:indexPath.row]]) {
cell.cellContent.thumbnails = [self.cellThumbnailCache objectForKey:[NSNumber numberWithInt:indexPath.row]];
[cell.cellContent setNeedsDisplay];
}
else {
//First it removes all the existing UIImages from the cell.cellContent.thumbnails mutable array.
int i = 0;
while (i < numberOfThumbnailsToDraw) {
Media *media = [entryNewMoc.media objectAtIndex:i];
UIImage *image = [media getThumbnail];
[newMoc save:nil];
[cell.cellContent.thumbnails addObject:image];
i++;
}
//Then it goes through getting UIImages and adding them to the array.
[self.cellThumbnailCache setObject:cell.cellContent.thumbnails forKey:[NSNumber numberWithInt:indexPath.row]];
[cell.cellContent setNeedsDisplay];
//Then it all gets drawn in setNeedsDisplay.
}
問題は、すべてのオブジェクトを削除することに戻ると、thumbnailsCacheのNSLogにエントリが空であることが示されているため、実際のUIImageがレコードから削除されているように見えることです。それを行うのはremoveAllObjects行ですが、それが保持されている場合は、セルにメディアを追加し続けます。