博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【iOS】利用cell的重用机制取消图片异步下载
阅读量:6236 次
发布时间:2019-06-22

本文共 827 字,大约阅读时间需要 2 分钟。

在项目中,我们会进行异步的网络下载图片把它加载UITableViewCell中上,一般情况下在我们会在cellForRow方法里面设置cell的图片数据源(异步进行网络下载图片),也就是说如果一个cell的UIImageview对象开启了一个下载任务,这个时候该cell对象发生了重用(reuse),新的image数据源会开启另外的一个下载任务,由于他们关联的UIImageview对象实际上是同一个cell实例的UIImageview对象,就会发生2个下载任务回调给同一个UIImageview对象。这个时候就有必要做一些处理,避免回调发生时,错误的image数据源刷新了UI。

还有一点,就是当我们在使用SDWebImage为Cell下载图片的时候,每一个Cell(单独的对象)持有一个SDWebImage,而每一个的SDWebImage的最大并发数都是6,假设你现在有10页数据,每一页有10条,每一条有6张图片,那你快速滑到第10页,难道是有100*6这么多线程去并发下载吗?

所以在我们向下滑动UITableview的时候我们需要手动去取消(cancel)掉下载操作,当用户停止滑动,再去执行下载操作。

具体思路如下:我们可以利用cell的重用机制,当cell被重用了,取消下载。

//当前已经被分配的cell如果被重用了(通常是滚动出屏幕外了)- (void)prepareForReuse {    [super prepareForReuse];    //在下面写取消下载的操作。    [self.XXXImageView sd_cancelCurrentImageLoad];//如果用了SDWebImageDownloaderOperation,就取消这个SDWebImageDownloaderOperation。}复制代码

转载于:https://juejin.im/post/5b0cb1b06fb9a009d60a450a

你可能感兴趣的文章
浅谈Listview中Adpter的用法
查看>>
设计模式----代理模式
查看>>
基于Socket的文件传输(使用CSocket类)
查看>>
搭建邮件服务器准备工作
查看>>
介绍一款开源的类Excel电子表格软件
查看>>
linux磁盘及文件系统管理进阶
查看>>
如何编写更好的SQL查询:终极指南-第三部分
查看>>
Apache
查看>>
集群(3)
查看>>
网上商城bug总结
查看>>
小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。(PHP版本)
查看>>
LAMP
查看>>
金恒威10口M12车载工业交换机
查看>>
OSPF
查看>>
selenium登陆QQ邮箱出现appid is invalid
查看>>
重放***之无线门铃
查看>>
url地址栏编码
查看>>
loadrunner analysis graph settings
查看>>
animationFromTop
查看>>
Java多线程运行时序问题
查看>>