Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.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 在显示uitableviewcell之前下载图像_Ios_Objective C_Uitableview - Fatal编程技术网

Ios 在显示uitableviewcell之前下载图像

Ios 在显示uitableviewcell之前下载图像,ios,objective-c,uitableview,Ios,Objective C,Uitableview,可以想象,这些关键字(下载图像uitableviewcell)将返回与“延迟加载”问题相关的结果,这不是我想知道的 我想知道的是,是否有办法在手机显示之前下载图像 如果我们可以提前下载可视单元格加5或6的图像,并在表格运行时继续提前下载5/6图像,那就太好了 当然,所有链接都存储在一个数组中,因此很容易提前获取它们 我使用AFNetworking进行所有的网络操作 谢谢你的天真解决方案 如果您的图像具有缓存策略,那么您可以根据需要预取任意数量的图像,并且在下一次实际调用中,如果您将图像加载到单元

可以想象,这些关键字(下载图像uitableviewcell)将返回与“延迟加载”问题相关的结果,这不是我想知道的

我想知道的是,是否有办法在手机显示之前下载图像

如果我们可以提前下载可视单元格加5或6的图像,并在表格运行时继续提前下载5/6图像,那就太好了

当然,所有链接都存储在一个数组中,因此很容易提前获取它们

我使用AFNetworking进行所有的网络操作


谢谢你的天真解决方案

如果您的图像具有缓存策略,那么您可以根据需要预取任意数量的图像,并且在下一次实际调用中,如果您将图像加载到单元格中,它将更快地(从缓存)加载图像。这有点幼稚,因为您的一切都基于这样一个谓词,即服务器在客户端使用缓存机制来减少网络操作的数量(但情况并非总是如此)

更好的解决方案

此外,您还可以实现自己的数据结构(例如extend NSMutableDictionary)来存储、处理图像并随时下载图像。例如,当您加载表格视图时,您可以开始下载将要显示的图像以及下一个单元格的多个图像。然而,正如@picciano所说,表视图的滚动速度非常快,所以预取只是浪费时间

评论


只有当用户连接到高速网络时,这种预取才有意义。但是,如果用户连接到慢速网络,那么您将创建一大块网络操作,这些操作需要时间才能完成(电池效率不是很高)。

服务器是否会对图像使用缓存策略进行响应?图像只有几kb,最大值不超过200 kb!UITableViewCells可以非常快速地滚动,而无需花很多时间进行预加载。也许可以设置一个队列来开始加载图像,看看在需要它们之前您能走多远。我建议您检查一下,它非常优雅地处理TableView中图像的异步加载