UITableView的reloadData有多贵?

Coo*_*coa 5 iphone cocoa-touch objective-c

我很好奇,就资源而言,UITableView的reloadData有多贵?我有一个应用程序,它将产生大约10个后续的HTTP请求,并且当它获取数据/ preps时,它会重新加载tableView.随着数据集越来越大,它变得非常缓慢.我正在试图弄清楚是不是因为我正在重新加载tableView的次数,或者是因为我正在抓取/解析数据.

在这种情况下,最佳做法是什么?

Ale*_*lin 16

从UITableView.h:

 - (void)reloadData;                 // reloads everything from scratch. redisplays visible rows. because we only keep info about visible rows, this is cheap. will adjust offset if table shrinks
Run Code Online (Sandbox Code Playgroud)

"这很便宜."

很好地实现你的表视图方法,并且一直调用这个函数都没什么大不了的.

另外,如果您考虑使用reloadData,则应尝试使用适当的方法为添加和删除行设置动画.


Ale*_*lex 5

最佳实践是cellForRowAtIndexPath:尽可能少地执行您的实现.实际上,除了UITableViewCell使用需要显示的数据填充实例之外,它实际上不应该做任何工作.

您应该使用缓存的UITableViewCells,这样您就不必每次都分配新的单元格.如果你可以在一个单独的线程中进行解析,并使解析后的数据准备就绪,可以访问cellForRowAtIndexPath:,那么就不应该有任何性能问题.

您没有说明您是否使用自定义UITableViewCell子类,但如果您使用自定义子类,则深层视图层次结构也会出现性能问题,因为层次结构中的每个视图都会被绘制.你可以UITableViewCell做得更好,越好.

希望能让你朝着正确的方向前进.