离开控制器时IOS删除缓存 - 翠鸟

时间:2017-06-24 23:17:27

标签: ios swift kingfisher

我使用翠鸟在桌面视图中加载来自网址的图片。在我的控制器中,我有一个用于显示图片的tableview,一个用于重新加载带有新图片的tableview的“next”按钮,以及一个从该视图控制器转到主视图控制器的“home”按钮。

我使用这种代码加载图片:

cell.imageInTableCell?.kf.setImage(with: url)

当我点击下一个按钮更新图片时清除我的缓存:

ImageCache.default.removeImage(forKey: photoUrl1)

它工作正常,我可以在记忆中看到起伏不定。

我的问题是当我点击主页按钮时尝试清除缓存。我使用的代码如下:

ImageCache.default.removeImage(forKey: photoUrl1)

或者:

let cache = KingfisherManager.shared.cache
        cache.clearMemoryCache()
        cache.clearDiskCache()
        cache.cleanExpiredDiskCache()

或者:

ImageCache.default.clearMemoryCache()
ImageCache.default.clearDiskCache()
ImageCache.default.cleanExpiredDiskCache()

它不起作用,我没有看到我的记忆使用减少。我将这些代码放在带有touchUpInside事件的IBAction中,在prepareForSegue和didReceiveMemoryWarning中,但没有任何反应。

当我只使用下一个按钮时,这是我的内存使用情况: enter image description here

这是我的主页按钮的问题然后用图片重新加载我的控制器然后再次点击主页按钮等: enter image description here

你看到了什么问题吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

兑现的图像没有在内存中兑现,它在磁盘的物理位置兑现 因此,如果清除内存缓存,您将无法检测到任何内存更改,请不要担心它是否正常。

如果你想让它在内存中兑现,你必须使用它。

///如果设置,Kingfisher只会将值缓存在内存中,而不会缓存在磁盘中。

case cacheMemoryOnly

请参阅此链接https://github.com/onevcat/Kingfisher/blob/master/Sources/KingfisherOptionsInfo.swift