2

我的应用程序中有几个 UIImageView,我使用 AFNetworkingsetImageWithURL从我的服务器填充图像。文档说此方法使用标准 UIImageView 缓存策略。我的问题是,如果我在服务器上更新图像,图像不会很快在应用程序中更新。即使我关闭应用程序并重新启动。如果我想更新图像,我必须重新安装应用程序,这会清除缓存并引入新图像。显然这不是用户想要的效果。

AFNetworking 的缓存是私有的,所以我无法在 UIImageView + AFNetworking 类别中直接访问它。关于清除整个应用程序缓存的任何想法?我将如何实现这一目标?

4

1 回答 1

2

您可以访问该+ (AFImageCache *)af_sharedImageCache方法,最简单的方法是将其复制到接口文件UIImageView+AFNetworking.h中。这将公开单例 NSCache 子类。然后您可以分别调用– removeObjectForKey:– removeAllObjects删除图像或所有图像。

如果您不想这样做,请考虑使用NSHTTPURLResponse对象作为键来缓存图像。您可以通过向 URL 附加一些随机值来创建不同的密钥(例如,您可以 append ?garbage=4H5G789H35G89H)。但是,这基本上会浪费内存,因为您将缓存永远不会检索到的图像。

最后,您可能希望提交增强请求(或自己编写代码)以公开缓存或使缓存成为可选。

于 2013-06-03T18:27:34.313 回答