在我的iOS应用中,我使用+imageNamed:
方法加载图片(多次,在代码的许多不同位置)。
在 one 的情况下,用户可能会更新(下载)新图像。
当我尝试加载新的时,由于缓存,它将显示旧的。
来自" Is there a way to clear the cache used by UIImage class?"问题,我看到我必须使用-initWithContentsOfFile:
方法。
但这不会利用+imageNamed:
所享有的缓存加速。我想要的只是" 告诉"文件已更改的缓存,因此需要" 重新缓存"它。然后继续使用+imageNamed:
方法和新的缓存图像。
换句话说,我使用+imageNamed:
方法(比方说)10次,我改变图像,我"告诉"缓存,然后我继续使用+imageNamed:
方法另外(说)10次。如果我将所有+imageNamed:
更改为-initWithContentsOfFile:
,那么我将失去缓存优势。
有没有办法/技巧呢?
答案 0 :(得分:1)
您可能只需要弄清楚自己的图像缓存方式。
我建议使用带有静态UIImage
的{{1}}类别来保存您的缓存图片。然后在初始化NSMutableDictionary
时使用自定义缓存方法。
例如:
UIImage
答案 1 :(得分:1)
没有用于清除缓存的API。如果您的应用未定位到应用商店,则可以调用私有方法:
[UIImage _flushSharedImageCache];
但是我不希望在生产代码附近的任何地方。
相反,我会在UIImage上创建一个类别,并添加一个从文件名返回所需图像的方法。下载新图像时,将存储该名称,然后进行更新。您将获得缓存的好处,而不需要任何简单的解决方法。
根据项目的复杂程度,简单的查找和替换不会花费太长时间。
虽然我现在质疑您的应用目前是如何工作的,但imageNamed仅查找您应用套装中的文件,因此不会对用户下载的图片起作用。
答案 2 :(得分:0)
也许我刚刚参加聚会......但是使用
+ (UIImage *)imageWithContentsOfFile:(NSString *
我摆脱了缓存问题。
希望它有所帮助!!