这两个功能均可用于在用户滚动列表时获取分页数据。但是,一个相对于另一个有什么明显的优势吗?哪个更适合实现分页?
答案 0 :(得分:1)
willDisplayCell
在单元格即将显示时被称为 ,并受开发人员处理重复显示等极端情况的限制。它旨在用于执行对相关单元进行廉价的状态更新操作-无需预取数据。
prefetchRowsAt
被提前调用,它使您可以“呼吸”来启动细胞所依赖的潜在昂贵操作。
The docs for prefetchRowsAt
state:
当用户滚动时,表视图在主调度队列上调用此方法,从而提供单元格的索引路径 它可能会在不久的将来显示 。< / p>
使用此方法的实现来启动任何昂贵的数据加载操作。始终异步加载数据,并将结果转发到表的数据源对象。表视图不会针对立即需要的单元格调用此方法,因此您的数据源对象还必须能够获取数据本身。
UITableView
也可以在数据源上调用 tableView(_, cancelPrefetchingForRowsAt:)
函数时取消预取操作。
是的,有很大的不同。一个选择比另一个选择需要更多的工作。
答案 1 :(得分:0)
我认为是苹果在寻找苹果文档。
prefetchRowsAt:为可能在不久的将来显示的单元格提供索引路径。使用此方法的实现开始任何昂贵的数据加载操作。
VS
willDisplayCell: 在使用单元格绘制行之前发送消息,此方法使委托有机会覆盖表格视图先前设置的基于状态的属性,例如选择和背景颜色