SDWebImage清除缓存

时间:2012-12-13 17:50:17

标签: iphone objective-c ios sdwebimage

我正在显示从网络下载的图标列表,其中包含表格视图中的文本。可以在服务器端更改图标,我需要在新图标可用时立即更换它们。我尝试使用以下代码:

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

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

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

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

4 个答案:

答案 0 :(得分:113)

SDImageCache *imageCache = [SDImageCache sharedImageCache];
[imageCache clearMemory];
[imageCache clearDisk];

不要忘记将这些代码行放在didReceiveMemoryWarning中。

答案 1 :(得分:9)

如果出现问题,请找到来源。似乎我被SDImageCache中使用的Singleton模式欺骗了。通过UIImageView使用的扩展缓存由SDWebImageManager控制,其实例变量为SDImageCache。如果要清除扩展缓存,则必须调用其imageCache的方法,如clearDisk和clearMemory。

答案 2 :(得分:1)

只有以下代码对我有用: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)

答案 3 :(得分:-1)

除了SDImageCache方法,我强烈建议您检查您的图片网址。在我的情况下,我尝试了imageCache的每个方法,内存问题仍在继续。崩溃主要发生在iPhone 4s上,因为硬件无法处理它。

主要问题是 url&ampersand encoding!

在示例中,请查看以下网址:第一个网址是“& amp”,第二个网址不是。因为&符号,我的JSON库无法读取宽度和宽度值,所以它应该高得多。这就是我遇到内存问题的原因。

1)/select.php?imageid=101961221 “& amp”; width = 100 “& amp”; isWatermarked = true

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

最新版本的SDWebImage库还包含UIImageView+WebCache.h类,它可以很好地处理缓存问题。

相关问题