Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.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:tableView:willDisplayCell:forRowAtIndexPath:方法和tableView(U2;:prefetchRowsAt:)方法之间的区别是什么?_Ios_Swift_Uitableview - Fatal编程技术网

iOS UITableView:tableView:willDisplayCell:forRowAtIndexPath:方法和tableView(U2;:prefetchRowsAt:)方法之间的区别是什么?

iOS UITableView:tableView:willDisplayCell:forRowAtIndexPath:方法和tableView(U2;:prefetchRowsAt:)方法之间的区别是什么?,ios,swift,uitableview,Ios,Swift,Uitableview,当用户滚动列表时,这两个函数都可用于获取分页数据。但两者之间有什么显著的优势吗?哪一个更适合实现分页?来自apple文档,我认为这就是您要寻找的差异 prefetchRowsAt:为可能在不久的将来显示的单元格提供索引路径。使用此方法的实现启动任何昂贵的数据加载操作 Vs willDisplayCell: 在使用单元格绘制行之前发送消息,此方法使代理有机会覆盖表视图先前设置的基于状态的属性,例如选择和背景色。当单元格即将显示时,将调用willDisplayCell,并由开发人员处理重复显示的角点

当用户滚动列表时,这两个函数都可用于获取分页数据。但两者之间有什么显著的优势吗?哪一个更适合实现分页?

来自apple文档,我认为这就是您要寻找的差异

prefetchRowsAt:为可能在不久的将来显示的单元格提供索引路径。使用此方法的实现启动任何昂贵的数据加载操作

Vs

willDisplayCell: 在使用单元格绘制行之前发送消息,此方法使代理有机会覆盖表视图先前设置的基于状态的属性,例如选择和背景色。当单元格即将显示时,将调用willDisplayCell,并由开发人员处理重复显示的角点情况,等等。它旨在对相关单元执行廉价的状态更新操作,而不是预取数据

另一方面,prefetchRowsAt被提前调用,它让你有“喘息空间”来启动细胞所依赖的可能昂贵的操作

:

当用户滚动时,表视图在主调度队列上调用此方法,为可能在不久的将来显示的单元格提供索引路径

使用此方法的实现启动任何昂贵的数据加载操作。始终异步加载数据,并将结果转发到表的数据源对象。表视图不会立即为需要的单元格调用此方法,因此数据源对象也必须能够获取数据本身

UITableView调用数据源上的函数时,也可以取消预取操作

所以,是的,有很大的不同。一个选项需要比另一个多得多的工作