我的应用程序中有几个UIImageView,我使用AFNetworking的setImageWithURL
从我的服务器填充图像。文档说这个方法使用标准的UIImageView缓存策略。我的问题是,如果我更新服务器上的图像,图像不会很快在应用程序中更新。即使我关闭了应用程序并重新启动。如果我想要更新图像,我必须重新安装应用程序,这将清除缓存并引入新图像。显然,这对用户来说不是一个理想的效果。
AFNetworking的缓存是私有的,因此我无法在UIImageView + AFNetworking类别中直接访问它。有关清除整个应用缓存的想法吗?我将如何实现这一目标?
答案 0 :(得分:2)
您可以通过将+ (AFImageCache *)af_sharedImageCache
方法复制到接口文件UIImageView+AFNetworking.h
中来轻松访问该方法。这将公开singleton NSCache子类。然后,您可以分别致电– removeObjectForKey:
或– removeAllObjects
删除图片或所有图片。
如果您不想这样做,请考虑使用NSHTTPURLResponse
对象作为密钥缓存图像。您可以通过在URL中附加一些随机值来创建不同的密钥(例如,您可以附加?garbage=4H5G789H35G89H
)。但是,这将基本上浪费内存,因为您将缓存永远无法检索的图像。
最后,您可能需要submit an enhancement request(或自己编写代码)来公开缓存或使缓存可选。