我们正在努力取消当我们使用集合视图单元时已经发送的请求..(我不是在谈论我们想要取消请求的情况,因为我们已经发送了相同的请求)...我想我们需要使用方法:cancelRequestForRequestReceipt ..问题是它不清楚如何获得这个RequestReceipt。
示例:
我们有一个包含不同图像的集合视图(每个图像都有不同的URL)。如果我将快速向后滚动,方法af_cancelImageRequest将完成这项工作,并且不会为同一个网址创建2个活动请求。超级!,问题是当我们尝试仅滚动到1个方向并且我们有1000个图像..基本上我们希望能够取消刚刚发送的请求,在图像返回之前,意味着我们没有图像并且我们没有AlamofireImage继续该请求...在单元格消失后(由于慢速互联网和fest滚动)... 所以,如果我做对了,我们可以使用cancelRequestForRequestReceipt ...问题是我们找不到如何获得这个RequestReceipt ......
BTW:我看到了AlamofireImage演示应用程序的示例代码,
override func prepareForReuse() {
super.prepareForReuse()
imageView.af_cancelImageRequest()
imageView.layer.removeAllAnimations()
imageView.image = nil
}
正如我所说,只有当请求已经在操作队列中时,此代码才会取消对图像的请求。
帮助:)
答案 0 :(得分:1)
我认为你的误解是 AlamofireImage 在这个例子中做了什么,但首先让我们了解prepareForReuse
方法是什么。
每次单元格将要出列时,都会调用此方法,这意味着如果你说你快速向前和向后滚动这个方法将被调用,如果你用 n快速向一个方向滚动图像每次单元格消失时都会调用此方法。
当您在UIImageView
上调用方法并在UITableViewCell
内存在引用时,您不需要RequestReceipt
因为请求将被取消。
如果你快速前进和后退正确的操作方式,它就不会在油门阻止这种行为后取消它。
AlamofireImage 这是一个非常棒的图书馆,但我认为你可以使用KingFisher获得更多好处,它可以为你提供快速前进和后退的权利,当然还有另一个单元格出列的情况,请求没有完成。
尽管如此,这些库可以为您处理所有艰苦的工作,您不需要重新发明轮子我的建议是您了解幕后发生了什么,以及如果这些库尚不存在,您将如何制作它。
我希望这对你有所帮助。