防止UITableView重用UITableViewCell?

时间:2011-10-04 14:59:49

标签: iphone uitableview

注释掉在UITableView中重用单元格的代码是否有害?

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

感谢。

编辑:根据@jrturton的回复,我决定不这样做。

2 个答案:

答案 0 :(得分:7)

它会增加内存使用并影响滚动性能。如果你只有10个细胞,它可能没有任何区别。有1000,这将是非常明显的。

您还需要注释掉对tableView的出列调用。

我不得不问 - 你为什么这么担心?您的问题可能有更好的解决方案。

根据您的评论,您可能仍希望每行重复使用一个单元格 - 否则当某些内容在屏幕上滚动并返回时,您必须重新创建它。您可以将indexPath行和节合并到单元格重用字符串中以实现此目的:

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

答案 1 :(得分:1)

除非您有非常具体/唯一的原因,否则应使用模板方法cellForRowAtIndexPath中提供的对单元格进行排队和解除排队的机制。这将使您的内存占用尽可能低并保持滚动顺畅。

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