SDWebImage清除缓存

问题描述 投票:34回答:4

我在一个表格视图中显示一个从网上下载的图标列表和文本。这些图标可以在服务器端改变,我需要在新的图标出现时立即替换它们。我尝试使用以下代码。

[imgView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"table_avatar_icon"] options:SDWebImageCacheMemoryOnly];

然后调用 [[SDImageCache sharedImageCache] clearMemory]; 在我的刷新回调中,但它并没有清除缓存的内容。更重要的是,即使我关闭应用程序并再次打开它,图像仍然存在。

我发现只有一种方法可以清除缓存,那就是通过调用 [[SDImageCache sharedImageCache] clearDisk];. 这只有在我关闭并重新打开应用程序后才有效。

如何强制SDWebImage不使用磁盘缓存?

iphone objective-c ios sdwebimage
4个回答
113
投票
SDImageCache *imageCache = [SDImageCache sharedImageCache];
[imageCache clearMemory];
[imageCache clearDisk];

不要忘了把这几行代码放在你的 didReceiveMemoryWarning,也。


9
投票

找到了源头,如果一个问题。看来,我是被使用的Singleton模式欺骗了。SDImageCache. 在UIImageView上使用的扩展的缓存是由 SDWebImageManager 的实例变量,它有一个 SDImageCache. 如果你想清除分机的缓存,你必须调用它的 imageCache的方法,如clearDisk和clearMemory。


0
投票

只有以下代码为我工作:Swift 5.0, Xcode 11, iOS 13, SDWebImage pod 5.0。

 SDWebImageManager.shared.imageCache.clear(with: .all) {
        print("deleted all")
 }

其中你选择的选项包括 SDImageCacheType.disk, SDImageCacheType.memory, SDImageCacheType.disk

如果你想从缓存中删除特定的图片,请使用以下方法。

SDWebImageManager.shared.imageCache.removeImage(forKey: "url of image", cacheType: .all)

-2
投票

除了SDImageCache方法外,我强烈建议你使用以下方法 检查你的图片URLs。 在我的情况下,我尝试了imageCache的所有方法,但内存问题仍然存在。崩溃主要发生在iPhone 4s上,因为硬件无法处理它。

主要的问题是 url "安培 "编码!

例如,看看这些url:第一个url使用"&amp",第二个没有。因为使用了 "amp",我的JSON库无法读取宽度,宽度值变得比应该的高很多。这就是为什么我有一个内存问题。

1) select.php?imageid=101961221 "&amp" ;宽度=100 "&amp" ;isWatermarked=true

2) select.phpimageid=101961221&width=100&isWatermarked=true。

最新版本的SDWebImage库 已包括 UIImageView+WebCache.h 类,它真的很好地处理了缓存问题。

© www.soinside.com 2019 - 2024. All rights reserved.