2011-10-04 80 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。这将保持您的内存占用尽可能低,并保持滚动平稳。

请注意,您可以在每次显示单元时修改单元的各个方面,因此如果您想分享尝试避免重复使用单元格的动机,或许我的建议会有所不同。