有没有办法刷新UIImage类使用的缓存?

时间:2016-01-14 14:32:59

标签: ios objective-c caching uiimage

在我的iOS应用中,我使用+imageNamed:方法加载图片(多次,在代码的许多不同位置)。 在 one 的情况下,用户可能会更新(下载)新图像。 当我尝试加载新的时,由于缓存,它将显示旧的。 来自" Is there a way to clear the cache used by UIImage class?"问题,我看到我必须使用-initWithContentsOfFile:方法。

但这不会利用+imageNamed:所享有的缓存加速。我想要的只是" 告诉"文件已更改的缓存,因此需要" 重新缓存"它。然后继续使用+imageNamed:方法和新的缓存图像。

换句话说,我使用+imageNamed:方法(比方说)10次,我改变图像,我"告诉"缓存,然后我继续使用+imageNamed:方法另外(说)10次。如果我将所有+imageNamed:更改为-initWithContentsOfFile:,那么我将失去缓存优势。

有没有办法/技巧呢?

3 个答案:

答案 0 :(得分:1)

您可能只需要弄清楚自己的图像缓存方式。

我建议使用带有静态UIImage的{​​{1}}类别来保存您的缓存图片。然后在初始化NSMutableDictionary时使用自定义缓存方法。

例如:

UIImage

答案 1 :(得分:1)

没有用于清除缓存的API。如果您的应用未定位到应用商店,则可以调用私有方法:

[UIImage _flushSharedImageCache];

但是我不希望在生产代码附近的任何地方。

相反,我会在UIImage上创建一个类别,并添加一个从文件名返回所需图像的方法。下载新图像时,将存储该名称,然后进行更新。您将获得缓存的好处,而不需要任何简单的解决方法。

根据项目的复杂程度,简单的查找和替换不会花费太长时间。

虽然我现在质疑您的应用目前是如何工作的,但imageNamed仅查找您应用套装中的文件,因此不会对用户下载的图片起作用。

答案 2 :(得分:0)

也许我刚刚参加聚会......但是使用

+ (UIImage *)imageWithContentsOfFile:(NSString *

我摆脱了缓存问题。

希望它有所帮助!!