35

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

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

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

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

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

4

5 回答 5

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

不要忘记将这些代码行也放入您的didReceiveMemoryWarning.

于 2013-04-29T11:23:32.917 回答
9

如果有问题,请找到源头。看来我被SDImageCache. 在 UIImageView 上使用的扩展缓存由其SDWebImageManager实例变量控制SDImageCache。如果你想为扩展清除缓存,你必须调用它imageCache的方法,比如 clearDisk 和 clearMemory。

于 2012-12-14T15:31:12.083 回答
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)
于 2020-06-10T10:54:36.123 回答
-2

除了 SDImageCache 方法,我强烈建议你检查你的图像 url。在我的情况下,我尝试了 imageCache 的所有方法,内存问题仍然存在。由于硬件无法处理,崩溃主要发生在 iPhone 4s 上。

主要问题是url & 编码!

例如,查看这些 url:第一个 url 使用“&”,第二个没有。由于 & 符号,我的 JSON 库无法读取宽度,并且宽度值变得比它应该高得多。这就是为什么我有记忆问题。

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

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

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

于 2015-05-12T10:22:59.283 回答
-2

可以在服务器端更改图标,

所以你需要每次都加载刷新缓存。

如果您使用的是最新的 SDWebImage 框架 (5.12.x)

你可以这样称呼它

[imgView sd_setImageWithURL:[NSURL URLWithString:urlStr] placeholderImage:[UIImage imageNamed:@"xxx" options:SDWebImageRefreshCached];

在 220112 编辑。

于 2021-10-20T08:21:15.443 回答