当我们使用集合视图单元格时,我们很难取消已经发送的请求。(我不是说我们想取消请求的情况,因为我们已经发出了同样的请求).我想我们需要使用以下方法: cancelRequestForRequestReceipt ..。问题是,不清楚如何获得这个RequestReceipt。
示例:
我们有一个具有不同图像的集合视图(每个图像都有不同的url)。如果我将快速回滚和向前滚动,方法af_cancelImageRequest将完成这项工作,并且不会为相同的url创建2个活动请求。太好了!,问题是当我们只向一个方向滚动,我们有1000张图片。基本上,我们希望能够在图像返回之前取消刚才发送的请求,这意味着我们没有图像,也没有AlamofireImage继续该请求.在细胞消失后(由于缓慢的互联网和狂喜的滚动)。所以,如果我做对了,我们可以用cancelRequestForRequestReceipt .问题是我们找不到这个RequestReceipt .
顺便说一句:我看到了AlamofireImage演示应用程序的示例代码,
override func prepareForReuse() {
super.prepareForReuse()
imageView.af_cancelImageRequest()
imageView.layer.removeAllAnimations()
imageView.image = nil
}如前所述,只有当请求已经在操作队列中时,此代码才会取消对图像的请求。
(帮助:)
发布于 2016-09-12 04:05:44
我认为您误解了AlamofireImage在这个示例中所做的事情,但是首先让我们了解一下prepareForReuse方法是什么。
每当单元格被取消排队时,这个方法就会被调用,这意味着,例如,如果如您所说的那样,将调用该方法,如果您以n个图像快速地向一个方向滚动,则每当单元格消失时,该方法将被调用。
当您在UIImageView上调用方法并在UITableViewCell中存在一个引用时,您不需要RequestReceipt,因为请求将为您取消。
在这种情况下,当你快速前进和后退,正确的处理方式,它不是取消它在节流阀后,防止这种行为。
AlamofireImage --这是一个非常好的库,但是我认为使用翠鸟可以获得更多的好处,在快速前进和向后移动的情况下,它为您处理麻烦,当然,在另一种情况下,单元正在退出队列,并且请求还没有完成。
尽管如此,这个库为您处理所有的艰苦工作,您不需要重新发明方向盘,我的建议是,您了解幕后发生了什么,以及如果这些库还不存在,您如何才能做到这一点。
希望这能帮到你。
https://stackoverflow.com/questions/39437043
复制相似问题