ios - UIImageView 缓存策略 - AFNewtorking

标签 ios caching afnetworking

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

AFNetworking 的缓存是私有(private)的,因此我无法在 UIImageView + AFNetworking 类别中直接访问它。关于清除整个应用程序缓存有什么想法吗?我该如何实现这一目标?

最佳答案

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

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

最后,您可能想要 submit an enhancement request (或自己编写一个代码)以公开缓存或使缓存可选。

关于ios - UIImageView 缓存策略 - AFNewtorking,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16901525/

相关文章:

xcode - Swift AFNetworking dataTaskWithRequest 覆盖问题

ios - 如何创建一个类以用于不同的项目?

javascript - Redis - 持久化个人散列

python - 获取网页的当前版本

.Net 简单的内存缓存

php - 在带有 AFnetworking 的 iOS 应用程序上使用 cookie

ios - 如何从 ios 的本地库中将图像添加到 Collection View 单元格中?

ios - 在模拟器中尝试 iPad 快捷方式

iOS:我的应用已在应用商店中后,在哪里更改它的名称?

ios - 如何在iOS中添加MBProgressHUD等待加载数据