gpt4 book ai didi

swift - 使用 AlamofireImage 取消图像下载

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:40 24 4
gpt4 key购买 nike

当我们使用 Collection View 单元格时,我们正在努力取消已经发送的请求..(我不是在谈论我们想要取消请求的情况,因为我们已经发送了相同的请求)......我想我们需要使用方法:cancelRequestForRequestReceipt .. 问题是不清楚如何获得此 RequestReceipt。

例子:

我们有一个包含不同图像的 Collection View (每个图像都有不同的 url).. 如果我快速来回滚动,af_cancelImageRequest 方法将完成这项工作并且不会为相同的 url 创建 2 个事件请求.. super !,问题是当我们尝试只滚动到 1 个方向并且我们有 1000 张图像时..基本上我们希望能够在图像返回之前取消刚刚发送的请求,这意味着我们没有图像并且我们不会让 AlamofireImage 继续该请求......在单元格消失后(由慢速互联网和巨星滚动引起)..所以,如果我做对了,我们可以使用 cancelRequestForRequestReceipt ...问题是我们找不到如何获取此 RequestReceipt ...

顺便说一句:我看到了 AlamofireImage 演示应用程序的示例代码,

override func prepareForReuse() {
super.prepareForReuse()

imageView.af_cancelImageRequest()
imageView.layer.removeAllAnimations()
imageView.image = nil
}

正如我所说,只有当请求已经在操作队列中时,这段代码才会取消图像请求。

帮助:)

最佳答案

我认为您误解了 AlamofireImage 在此示例中的作用,但首先让我们了解一下 prepareForReuse 是做什么的方法。

每次单元格将要出队时调用此方法,这意味着如果例如你说你快速向前和向后滚动此方法将被调用,如果你在一个方向快速滚动 n 图像每次单元格消失时都会调用此方法。

当您通过 UIImageView 调用方法并在 UITableViewCell 中存在引用时,您不需要 RequestReceipt,因为将为您取消请求。

在这种情况下,当您以正确的处理方式快进和快退时,在阻止这种行为的 throttle 之后不会取消它。

AlamofireImage 这是一个非常棒的库,但我认为您可以使用 KingFisher 获益更多,它为您处理快进和快退情况下的节流,当然还有其他情况,即单元格出列和请求未完成。

尽管如此,这个库会为您处理所有艰苦的工作,您不需要重新发明轮子,我的建议是您了解幕后发生的事情,以及如果这些库尚不存在,您将如何实现。

希望对你有帮助

关于swift - 使用 AlamofireImage 取消图像下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39437043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com