如何清除使用Kingfisherin UITableView加载的图像的内存和磁盘缓存?

Ank*_*pta 4 xcode memory-management uitableview ios kingfisher

我需要释放使用Kingfisher获取的图像所占用的所有内存.我有一个存储大量图像的UITableView,并且还具有"加载更多"功能.

我试过这些措施.

在viewDidLoad()中,我设置了缓存大小.

let cache = KingfisherManager.sharedManager.cache
cache.maxMemoryCost = 50 * 1024 * 1024
// Set max disk cache to 50 mb. Default is no limit.
cache.maxDiskCacheSize = 50 * 1024 * 1024
// Set max disk cache to duration to 3 days, Default is 1 week.
cache.maxCachePeriodInSecond = 60 * 60 * 24 * 3
Run Code Online (Sandbox Code Playgroud)

在viewWillDisappear()我清除这个.

cache.clearMemoryCache()
// Clear disk cache. 
cache.clearDiskCache()
// Clean expired or size exceeded disk cache.
cache.cleanExpiredDiskCache()
Run Code Online (Sandbox Code Playgroud)

仍然没有按预期释放内存.如果我错过了什么,请纠正我.

Ank*_*pta 10

收到内存警告后,我清除了缓存,现在它对我来说很好用:

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
    cache.clearMemoryCache()
    cache.clearDiskCache()
    cache.cleanExpiredDiskCache()
}
Run Code Online (Sandbox Code Playgroud)

Swift 4的更新:

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
    KingfisherManager.shared.cache.clearMemoryCache()
    KingfisherManager.shared.cache.clearDiskCache()
    KingfisherManager.shared.cache.cleanExpiredDiskCache()
}
Run Code Online (Sandbox Code Playgroud)


Chh*_*eng 8

Swift 4 中的翠鸟

KingfisherManager.shared.cache.clearMemoryCache()
KingfisherManager.shared.cache.clearDiskCache()
KingfisherManager.shared.cache.cleanExpiredDiskCache()
Run Code Online (Sandbox Code Playgroud)


小智 5

Swift 5,您可以将 3 行替换为 1 行。

KingfisherManager.shared.cache.clearCache()
Run Code Online (Sandbox Code Playgroud)