所以這可能有點難以解釋,但我會盡我所能。這個問題也可能需要幾個步驟來解決。如何創建一組uiimages的副本?
此代碼出現在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.
}
的問題是,當它回來輪刪除所有對象,這似乎刪除實際記錄中的UIImages,因爲縮略圖緩存中的NSLog顯示條目爲空。這是它的removeAllObjects行,但如果它保持不變,那麼它只是向單元添加更多媒體。
店面形象。圖像將以這種格式image_0.png,image_1.png,....... –
首先,可以簡化'if' /'else':'cell.cellContent.thumbnails = [self.cellThumbnailCache objectForKey:[ NSNumber numberWithInt:indexPath.row]];如果(!cell.cellContent.thumbnails){//做另一個分支的東西'第二,如果密鑰只是一個由整數構成的「NSNumber」,爲什麼要使用字典呢?您可以使用數組。另外,爲什麼使用'while'循環來做'for'的工作? –
@JoshCaswell使用字典是因爲單元格沒有按順序加載,因此無法在14-19不存在時添加objectAtIndex:20。而不是..我總是使用whiles,從來沒有與fors舒適。據我所知,它做的是同樣的工作,我現在更願意堅持使用它。 – Andrew