2011-10-04 75 views
1

註釋掉在UITableView中重用單元的代碼有害嗎?防止UITableView重用UITableViewCell?

// if (cell == nil) 
// { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease]; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
// } 

謝謝。

編輯:根據@jrturton的回覆,我決定不這樣做。

回答

7

這會增加內存使用並影響滾動性能。如果你只有10個電池,它可能沒有任何區別。有了1,000個,這將非常明顯。

您還需要註釋掉對tableView的出隊調用。

但我必須問,爲什麼你關心這個?您的問題可能有更好的解決方案。

根據您的評論,您可能仍然希望每行重複使用一個單元 - 否則當某些內容從屏幕滾動並返回時,您將不得不重新創建它。您可以納入indexPath行和部分進入細胞再利用串,以方便這一點:

NSString *cellIdentifier = [NSString stringWithFormat:@"cell%d.%d",indexPath.section,indexPath.row]; 
+0

我需要在表中放置一個圖像,我已經遵循了'http:// www.markj.net/iphone-asynchronous-table-image /'但我有一些奇怪的行爲,所以我認爲創建一個新的細胞每次都會解決問題。謝謝。 –

+0

哦,謝謝...我真的嘗試過這個,但只添加了兩個標識符,一個用於圖像單元格,其他用於其他標識符..當我應用您的方法時,它才起作用。謝謝。 –

+0

這種方法唯一的問題是,它不適用於原型單元 – Camus

1

除非你有一個非常特殊的/唯一的原因,你應該使用機制排隊中提供的和去queing細胞模板方法cellForRowAtIndexPath。這將保持您的內存佔用儘可能低,並保持滾動平穩。

請注意,您可以在每次顯示單元時修改單元的各個方面,因此如果您想分享嘗試避免重複使用單元格的動機,或許我的建議會有所不同。