首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SDWebImage清除缓存

SDWebImage清除缓存
EN

Stack Overflow用户
提问于 2012-12-14 01:50:17
回答 5查看 33.4K关注 0票数 35

我在一个表视图中显示了一个从web下载的图标列表,其中包含文本。图标可以在服务器端更改,我需要尽快更换他们的新图标是可用的。我尝试使用以下代码:

代码语言:javascript
复制
[imgView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"table_avatar_icon"] options:SDWebImageCacheMemoryOnly];

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

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

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-29 19:23:33

代码语言:javascript
复制
SDImageCache *imageCache = [SDImageCache sharedImageCache];
[imageCache clearMemory];
[imageCache clearDisk];

别忘了把这几行代码也放到你的didReceiveMemoryWarning中。

票数 113
EN

Stack Overflow用户

发布于 2012-12-14 23:31:12

已找到问题的来源。似乎我被SDImageCache中使用的单例模式欺骗了。在UIImageView上使用的扩展缓存由SDWebImageManager控制,它有一个实例变量SDImageCache。如果你想为扩展清除缓存,你必须调用它的imageCache的方法,比如clearDisk和clearMemory。

票数 9
EN

Stack Overflow用户

发布于 2020-06-10 18:54:36

只有以下代码对我有效: Swift 5.0,Xcode11,iOS 13,SDWebImage pod 5.0

代码语言:javascript
复制
 SDWebImageManager.shared.imageCache.clear(with: .all) {
        print("deleted all")
 }

你可以选择像SDImageCacheType.disk, SDImageCacheType.memory, SDImageCacheType.disk这样的选项

另外,如果您想从缓存中删除特定的图像,请使用以下命令:

代码语言:javascript
复制
SDWebImageManager.shared.imageCache.removeImage(forKey: "url of image", cacheType: .all)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13865537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档