【iOS】利用cell的重用机制取消图片异步下载

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值