iOS:UITableView中有数千个分区时的性能

iOS:UITableView中有数千个分区时的性能,ios,swift,uitableview,Ios,Swift,Uitableview,我在TableView中有数千个节,我使用titleForHeaderInsection为每个节指定一个标题。但我发现当TableView初始化时,此方法将被调用数千次,为每个节指定一个标题。这是否意味着我每次都要设置几个部分 Tableview基于可重用性的概念工作,因此只创建了少数可见的部分,其余部分都被重用,因此无需为此操心 其余部分请参考此链接:Apple官方链接:查看Uitableview数据源方法的生命周期,因为每个部分和行都会调用每个方法。所以,如果分段法被调用上千次,这是完全正确

我在TableView中有数千个节,我使用
titleForHeaderInsection
为每个节指定一个标题。但我发现当TableView初始化时,此方法将被调用数千次,为每个节指定一个标题。这是否意味着我每次都要设置几个部分

Tableview基于可重用性的概念工作,因此只创建了少数可见的部分,其余部分都被重用,因此无需为此操心


其余部分请参考此链接:Apple官方链接:

查看Uitableview数据源方法的生命周期,因为每个部分和行都会调用每个方法。所以,如果分段法被调用上千次,这是完全正确的。如果您对此有任何问题,请添加一个页面,如加载前10个部分,然后加载其他10个部分,然后继续。

不,您不必这样做

内存针对这种情况进行了优化,因此,如果数据源设置正确并且包含数据(无论大小),UI应该安全地处理它

例如,iOS应用程序中的UITableView只渲染当前显示的单元格。例如,iPhone6上的公共tableview一次显示大约15行

作为用户,当您向下(或向上)滚动表视图时,每次在显示特定单元格之前,都会调用cellForRow方法并从数据源获取数据

这也适用于部分

但是,如果您的数据不必存储在应用程序包中,最好的方法是异步获取源数据,例如,在启动应用程序后,您可以从服务器获取30行数据。然后,如果您到达(滚动)第30行,您的应用程序将从服务器请求更多数据并更新表。 所以用户不会滚动您的tableView,不会下载所有数据,也不会使用大数据传输

作为结论,我要提到的是,在所有情况下,数据源越小,应用程序的性能越好