我想知道tableView上的reloadData是多么昂贵。我想每5秒刷新一次tableview。这会导致任何性能问题吗?
答案 0 :(得分:5)
重新加载数据会调用表格视图数据源numberOfRowsInSection
上的两个主要方法,然后针对所需的可见单元格迭代cellForRow:atIndexPath:
,具体取决于您的tableView的contentOffset
如果你的应用已经很好地滚动,那么你的应用程序唯一会遇到的性能影响就是你在numberOfRowsInSection
做了很多工作(比如点击网络或者耗费时间)。
编辑如上所述,如果您使用heightForRow:atIndexPath:
对不同高度的单元格进行复杂计算,{{1}}也可能是一个难点。
答案 1 :(得分:0)
除了@Jessedc回答,
如果所有行的高度相同,则heightForRowAtIndexPath
比tableview.rowHeight
贵。
如果每行有很多行具有不同的高度,并且每次调用heightForRowAtIndexPath
方法时计算行的高度,那么它的成本就会更高。
决定reloadData
电话的费用有很多因素。一切都取决于每次调用委托方法时你正在做什么和多少。
答案 2 :(得分:0)
如果适用于您的情况,NSFetchedResultsController可以在数据更改时通知您的表视图,而不是每隔“n”秒刷新一次。