- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个表格 View ,其中包含多个提要单元格,每个提要单元格都有几张图片。我正在加载这样的图像:
[timeLineCell.avatar setImageWithURL:[NSURL URLWithString:[feedAccount accountAvatarUrl]] placeholderImage:avatarPlaceholderImage options:SDWebImageRetryFailed];
这工作正常,但在慢速连接上,操作往往只是爬升而不是删除相同图像的旧操作。也就是说,如果我向下滚动并返回相同的单元格,它会将相同的图像第二次、第三次、第四次等添加到操作队列中。
当单元格在 cellForRow 中像这样重用时,我还尝试从下载队列中删除图像:
- (void)prepareForReuse {
[super prepareForReuse];
[self.avatar cancelCurrentImageLoad];
}
但在 SDWebImage 的方法中,操作似乎与操作队列中的任何内容都不匹配,因此它实际上并没有取消任何内容。如果我在共享管理器上运行 cancelAll 它可以工作,但它显然不理想。
我知道我只在这个单元格上显示一张图片,但我已经注释掉了除了这张图片加载之外的所有内容,问题仍然存在。如果我注释掉头像图像并允许下载不同的图像(类似地加载),它也会持续存在。
有人对此有任何建议吗?
附言我已经尝试将选项从 SDWebImageRetryFailed
更改为其他内容,包括根本没有选项,但没有任何区别。
附言我正在使用 CocoaPods (3.4) 上可用的最新版本的 SDWebImage。
最佳答案
为了解决这个问题,我实际上对 SDWebImage 框架进行了一些编辑。首先,我将以下方法添加到 SDWebImageManager
:
- (void)cancelOperation:(id<SDWebImageOperation>)operation {
@synchronized(self.runningOperations)
{
[self.runningOperations removeObject:operation];
}
}
然后,我修改了SDWebImageCombinedOperation
上的- (void)cancel
方法:
- (void)cancel
{
self.cancelled = YES;
[[SDWebImageManager sharedManager] cancelOperation:self];
if (self.cacheOperation)
{
[self.cacheOperation cancel];
self.cacheOperation = nil;
}
if (self.cancelBlock)
{
self.cancelBlock();
self.cancelBlock = nil;
}
}
这并没有完全解决在队列中添加额外操作的问题,但现有失败的操作肯定会更快地被清除,因此问题不再是问题。我假设似乎队列中添加了更多操作,但那是因为现有操作尚未检查它们的 isCancelled
标志。
关于iphone - SDWebImage 操作未被取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727165/
我正在使用iPhone应用程序。在这个应用程序中,我使用了许多图像,我需要将这些图像存储在高速缓存中。为此,我发现SDWebImage是正确的框架,但无法在我的iPhone项目中包括此框架。谁能建议我
我使用 SDWebImage 将图像下载到我的 UITableView 中: [cell.imageView setImageWithURL:[NSURL URLWithString:tempPhot
如何使用 UIImageView 在 SDWebImage 占位符中设置事件指示器 最佳答案 Swift 5 和 SDWebImage 5-beta //pod file pod 'SDWebImag
所以首先,我发现了这个: SDWebImage process images before caching 这有帮助,但我真的想使用SDWebImage,有没有办法在完成之前通过类外部的方法处理图像?
我在应用程序中使用SDWebImage从网络加载和缓存图像。它的工作原理就像是一种魅力,但是唯一的问题是,每当我退出应用程序时,即使是暂时退出,图像缓存也会被清除,所有图像都必须再次下载。 Inter
我正在使用 SDWebImage 将图像从服务器获取到我在 IOS 中的表格 View 应用程序。 但问题是,当我在表格 View 中向下滚动而不是等待图像加载时,将下载的图像放在表格 View 的前
我正在尝试使用 SDWebImage 来缓存从网络检索的图像。图像一直缓存到内存中。我已经看到默认保存到磁盘的文档。 Everything will be handled for you, from
我有一个带有背景图像的按钮,我使用 SDWebImage 下载该按钮。我想保持高度不变,并通过保持纵横比而不剪切图像来改变宽度。只是恒定的高度和动态宽度。这里出了什么问题? //CODE FROM F
我使用 SDWebImage pod 进行下载并显示来自 json 的图像,它运行良好,但我有一个大问题。 我正在使用collectionView,当加载单元格时,某些单元格显示错误的图像。我搜索了它
我一定是在做一些愚蠢的事情,但是 SDWebImage 永远不会执行以下的完成处理程序: episodeImageView?.sd_setImage(with: url, completed: { [
我正在使用 SDWebImage 库。当我使用 iPhone 时它工作正常,但当我使用模拟器编译时它不起作用。我收到此错误: Undefined symbols for architecture
我尝试了 100 多种使用 SDWebImage 制作图像动画的方法,但总是失败。我理解使用 block 好吗?我有 IBOutlet 属性图像名称 images1。我制作了数组来存储值并为 3 个图
我正在使用 SDWebImage 框架下载 iPhone 游戏中的个人资料图像。 [cell.playerImage setImageWithURL:url placeholderImage: Def
我在 UICollectionView 和 UITableView 中使用 SDWebImage。在这两种情况下,当行数很高时,内存使用率有时会非常高,我会收到内存警告。 以下是我的头像: 你看,有时
我正在使用 SDWebImage 库来缓存 UICollectionView 的图像,该图像是从 url 下载的,每次发送所有请求但只下载两个图像。有谁知道原因吗???提前致谢。 代码是: SDWeb
美好的一天! 从网络下载全尺寸图像时,我使用这两个库。 代码: -(void)viewDidAppear:(BOOL)animated { dispatch_async(dispatch_ge
是否可以使用SDWebImage下载AES加密图片?如果是这样,我在哪里可以访问下载的数据,手动解密它们? 最佳答案 不幸的是,无法使用 SDWebImage 下载加密图像。我只是看了他们的类图,没有
我正面临这个问题,下面是代码。它第一次显示错误,然后没有完成 block 调用。 [self.comicsImage setImageWithURL:[NSURL URLWithString:self
我检查了 NSBundle,但找不到 SDWebImage 保存图像的缓存。缓存是否启用(见下面的代码)?根据Docs它进行缓存管理。 如文档中所示: Just #import the UIImage
这个问题可能很奇怪,但它正在发生,而我却不明白。 我刚刚从 https://github.com/rs/SDWebImage 下载了代码并尝试运行示例项目。 它正在构建成功,但没有运行。为什么? 提前
我是一名优秀的程序员,十分优秀!