Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 设置UITableViewCell高度非常昂贵_Iphone_Objective C_Cocoa Touch_Uitableview - Fatal编程技术网

Iphone 设置UITableViewCell高度非常昂贵

Iphone 设置UITableViewCell高度非常昂贵,iphone,objective-c,cocoa-touch,uitableview,Iphone,Objective C,Cocoa Touch,Uitableview,我正在做一个比较 - (CGFloat)tableView:(UITableView *)tblView heightForRowAtIndexPath:(NSIndexPath *)indexPath 当我检查acell.detailTextLabel.text是否为@None时,我的应用程序的性能似乎真的变慢了 进行比较和设置单元格高度的更好方法是什么?UITableView实现了一个复杂的缓存结构,可以根据需要重用单元格,因为重新创建用于图形管理的底层缓冲区成本很高。更改单元格高度将需要

我正在做一个比较

- (CGFloat)tableView:(UITableView *)tblView heightForRowAtIndexPath:(NSIndexPath *)indexPath
当我检查a
cell.detailTextLabel.text是否为@None时,我的应用程序的性能似乎真的变慢了


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

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


更好的实现是将分配的单元按高度划分为组,并根据其高度要求重用单元。这样就不需要重新分配缓冲区,并且您可以从
UITableView

UITableView
中获得预期的性能。UITableView有一个复杂的缓存结构,可以根据需要重用单元,因为为图形管理重新创建基础缓冲区的成本很高。更改单元格高度将需要重新分配这些缓冲区,并且您将失去从缓存机制中获得的任何性能


更好的实现是将分配的单元按高度划分为组,并根据其高度要求重用单元。这样就不需要重新分配缓冲区,您将从创建单元格期间使用的
UITableView
高度为row的索引路径中获得预期的性能,因此不应访问单元格。与其检查单元格的内容,不如检查用于设置单元格内容的源。

heightForRowAtIndexPath在创建单元格期间使用,因此不应访问单元格。与其检查单元格的内容,不如检查用于设置单元格内容的源