我很好奇,就资源而言,UITableView的reloadData有多贵?我有一个应用程序,它将产生大约10个后续的HTTP请求,并且当它获取数据/ preps时,它会重新加载tableView.随着数据集越来越大,它变得非常缓慢.我正在试图弄清楚是不是因为我正在重新加载tableView的次数,或者是因为我正在抓取/解析数据.
在这种情况下,最佳做法是什么?
从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
"这很便宜."
很好地实现你的表视图方法,并且一直调用这个函数都没什么大不了的.
另外,如果您考虑使用reloadData,则应尝试使用适当的方法为添加和删除行设置动画.
最佳实践是cellForRowAtIndexPath:
尽可能少地执行您的实现.实际上,除了UITableViewCell
使用需要显示的数据填充实例之外,它实际上不应该做任何工作.
您应该使用缓存的UITableViewCell
s,这样您就不必每次都分配新的单元格.如果你可以在一个单独的线程中进行解析,并使解析后的数据准备就绪,可以访问cellForRowAtIndexPath:
,那么就不应该有任何性能问题.
您没有说明您是否使用自定义UITableViewCell
子类,但如果您使用自定义子类,则深层视图层次结构也会出现性能问题,因为层次结构中的每个视图都会被绘制.你可以UITableViewCell
做得更好,越好.
希望能让你朝着正确的方向前进.