设置UITableViewCell高度很昂贵

时间:2010-05-27 18:11:39

标签: iphone objective-c cocoa-touch uitableview

我在

进行比较
- (CGFloat)tableView:(UITableView *)tblView heightForRowAtIndexPath:(NSIndexPath *)indexPath

当我检查cell.detailTextLabel.text isEqualTo:@"None";

时,我的应用程序的性能似乎确实变慢了

进行比较和设置单元格高度的更好方法是什么?

2 个答案:

答案 0 :(得分:5)

UITableView实现了一个复杂的缓存结构,可以根据需要重用单元,因为为绘图管理重新创建底层缓冲区是很昂贵的。更改单元格高度将需要重新分配这些缓冲区,并且您将失去从缓存机制中获得的任何性能。

更好的实现方法是将按照高度分配的单元格划分为多个组,并根据单元格的高度要求重复使用单元格。这样就不需要重新分配缓冲区了,你将获得UITableView所期望的性能。

答案 1 :(得分:3)

在创建单元格期间正在使用heightForRowAtIndexPath,因此不应访问单元格。不要检查单元格的内容,而是检查用于设置单元格内容的相同源。