【问题标题】:UIImageView Cache policies - AFNewtorkingUIImageView 缓存策略 - AFNewtorking
【发布时间】:2013-06-04 02:27:34
【问题描述】:

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

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

【问题讨论】:

    标签: ios caching afnetworking


    【解决方案1】:

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

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

    最后,您可能希望submit an enhancement request(或自己编写代码)公开缓存或使缓存成为可选。

    【讨论】:

    • 正是我想要的。谢谢
    • 没问题。只是好奇,你采取了哪种方法?
    • 在 UIImageView+AFNetworking.h 中创建了一个名为 clearAFImageCache 的方法,该方法调用 [[[self class] af_sharedImageCache] removeAllObjects] 然后调用 [UIImageView clearAFImageCache]
    • 整洁。如果您喜欢它,请考虑将其提交给 AFNetworking 项目。其他类似的库,如 SDWebImage 有内置的缓存清除方法。
    猜你喜欢
    • 2010-10-06
    • 2011-04-03
    • 2012-09-05
    • 2020-08-03
    • 2011-11-12
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多