我的应用程序中有几个 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/