Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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
Ios UITableView在10000个数据上的性能_Ios_Swift_Uitableview - Fatal编程技术网

Ios UITableView在10000个数据上的性能

Ios UITableView在10000个数据上的性能,ios,swift,uitableview,Ios,Swift,Uitableview,我正在尝试在TableView中加载10k静态记录。渲染tableview需要30到45秒。如何提高性能 对延迟加载进行了分析,仅在从远程服务器下载图像时才找到相关搜索结果 注意:我已经尝试在主线程中加载数据,这会使应用程序冻结 我有一个想法,一次加载100个数据,当它被滚动时,我们可以加载另外100个数据。但我不知道该如何具体实施 我已经用这些链接搜索过了 什么也解决不了这个问题 有人建议实现这一点吗?UITableViewDataSourcePrefetching 当我们需要从web下载

我正在尝试在TableView中加载10k静态记录。渲染tableview需要30到45秒。如何提高性能

对延迟加载进行了分析,仅在从远程服务器下载图像时才找到相关搜索结果

注意:我已经尝试在主线程中加载数据,这会使应用程序冻结

我有一个想法,一次加载100个数据,当它被滚动时,我们可以加载另外100个数据。但我不知道该如何具体实施

我已经用这些链接搜索过了

什么也解决不了这个问题


有人建议实现这一点吗?

UITableViewDataSourcePrefetching

当我们需要从web下载大型模型(通常是图像或视频文件)或从磁盘获取数据时,预取非常有用。预取还让我们在访问数据模型时有些懒惰:我们不必获取所有的数据模型,而只需要获取即将显示的数据模型。这种方法减少了电池和CPU的消耗,从而带来更好的用户体验

以下两种方法处理预取

public func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath])
optional public func tableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths: [IndexPath])

您的问题太宽泛,无法回答,对于示例,您将逐步获得UITableViewDataSourcePrefetching

当我们需要从web下载大型模型(通常是图像或视频文件)或从磁盘获取数据时,预取非常有用。预取还让我们在访问数据模型时有些懒惰:我们不必获取所有的数据模型,而只需要获取即将显示的数据模型。这种方法减少了电池和CPU的消耗,从而带来更好的用户体验

以下两种方法处理预取

public func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath])
optional public func tableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths: [IndexPath])

您的问题太宽泛,无法回答,对于示例,您将逐步了解为什么您没有尝试“渲染tableview”需要30秒到45秒?tableview通常只渲染可见的单元格,在实践中,这些单元格的数量通常在同一时间大约为5-15个–无论您的模型上有25个还是1M个记录。我只是调用了具有10k数据的重载tableview。它首先点击“numberOfRowsInSection”,然后用40秒的时间到达CellForRow。cellForRowAt indexPAth方法仅对不需要时间的可见行调用它意味着线程未升级,尝试使用main_队列我也尝试过使用main队列,如果我使用主线程加载数据,应用程序将被冻结为什么不尝试“呈现tableview”需要30秒到45秒?tableview通常只渲染可见的单元格,在实践中,这些单元格的数量通常在同一时间大约为5-15个–无论您的模型上有25个还是1M个记录。我只是调用了具有10k数据的重载tableview。它首先点击“numberOfRowsInSection”,然后用40秒的时间到达CellForRow。cellForRowAt indexPAth方法仅为不需要时间的可见行调用。这意味着线程未升级,请尝试使用主队列。我也尝试过使用主队列,如果我使用主线程加载数据,应用程序将被冻结。我只想加载10k文本数据,这些数据已经静态获取并可用。重新加载服务器需要将近40秒的时间tableview@GobiM-你的?不同的是,您在加载更多时间或初始时间时遇到问题否。我只想加载10k文本数据,这些数据已经静态获取并可用。重新加载服务器需要将近40秒的时间tableview@GobiM-你的?不同的是,您在加载更多时间或初始时间遇到问题