You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SDWebImage 15.9.1中废弃API removeImage的使用疑问

解决SDWebImage 15.9.1中removeImage(forKey:cacheType:completion)废弃问题

提示信息的含义

提示里的“Cast to cache instance and call its API”意思是:不要再用顶层的废弃API,而是直接获取对应的缓存实例(内存缓存/磁盘缓存),调用实例本身的删除方法。SDWebImage 15+重构了缓存层的API,把原来顶层统一的删除接口拆分到了具体的缓存实例上。

具体操作步骤

SDWebImage的缓存分为内存缓存(SDMemoryCache,基于NSCache实现)和磁盘缓存(SDDiskCache)两类,你需要根据原代码指定的cacheType,分别操作对应的缓存实例:

1. 按缓存类型单独删除

  • 若原代码指定.memory(仅删除内存缓存):
    let memoryCache = SDImageCache.shared.memoryCache
    memoryCache.removeObject(forKey: "你的缓存Key") {
        // 删除完成后的回调逻辑
    }
    
  • 若原代码指定.disk(仅删除磁盘缓存):
    let diskCache = SDImageCache.shared.diskCache
    diskCache.removeObject(forKey: "你的缓存Key") { error in
        // 可在这里处理删除失败的错误
        completion?()
    }
    
  • 若原代码指定.all(同时删除内存和磁盘缓存):
    let memoryCache = SDImageCache.shared.memoryCache
    let diskCache = SDImageCache.shared.diskCache
    
    // 先删内存缓存,完成后再删磁盘缓存
    memoryCache.removeObject(forKey: "你的缓存Key") {
        diskCache.removeObject(forKey: "你的缓存Key") { _ in
            // 全部删除完成后的回调
        }
    }
    

2. 封装兼容旧调用方式(可选)

如果想保留原方法的调用形式,避免大面积修改代码,可以自己封装一个扩展方法:

extension SDImageCache {
    func removeImage(forKey key: String, cacheType: SDImageCacheType, completion: (() -> Void)?) {
        switch cacheType {
        case .memory:
            memoryCache.removeObject(forKey: key) {
                completion?()
            }
        case .disk:
            diskCache.removeObject(forKey: key) { _ in
                completion?()
            }
        case .all:
            memoryCache.removeObject(forKey: key) { [weak self] in
                self?.diskCache.removeObject(forKey: key) { _ in
                    completion?()
                }
            }
        @unknown default:
            completion?()
        }
    }
}

这样就能继续用原来的调用逻辑,内部自动适配新API。

注意事项

  • 磁盘缓存的删除方法会返回可选错误,可根据业务需求处理删除失败的场景
  • 不需要直接操作底层的NSCache,SDWebImage已经将其封装在SDMemoryCache中,直接调用实例方法即可

内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 23:47:05