AFNetworking中UIImageView的磁盘备份图像缓存

时间:2013-06-12 23:17:13

标签: ios objective-c afnetworking nsurlcache

我希望将AFImageCache类别中默认使用的UIImageView+AFNetworking替换为基于磁盘且可以更准确地管理的内容(类似{ {3}})。不幸的是,由于UIImageView+AFNetworking是一个类别而不是子类,我不能仅使用UIImageView或其他类别的子类覆盖NSURLCache

有没有其他方法可以实现此功能而无需将大多数UIImageView+AFNetworking复制并粘贴到我自己的子类中?

2 个答案:

答案 0 :(得分:6)

SDWebImage项目提供了类似的UIImageView类别,但提供了内存(使用NSCache)和磁盘(使用NSFileManager)缓存。我建议您在需要缓存到磁盘时使用它。

此实现的缺点是您的网络请求不会通过您的AFHTTPClient子类,因此根据您的需求,您可能需要实现自己的操作队列,身份验证等。如果您'只是将它用于基本的东西,比如在桌面视图中显示头像图像,应该没问题。

如果这种下行困扰你,另一个想法是使用SDImageCache(包含在SDWebImage项目中)来缓存图像,并使用AFNetworking自行下载。

最后,请注意AFNetworking内置了对NSURLCache的支持,如果您创建了一个,它会将您的图像缓存到磁盘。但是,图像缓存通常用于显示UIScrollView中的大量图像,NSURLCache没有足够好的平滑滚动性能。

答案 1 :(得分:2)

我有一个AFNetworking的分支,其中包括NSCachesDirectory中的文件缓存。

您可以在此处找到它:https://github.com/andyast/AFNetworking_FileCache 如果您需要,还有一个与V1.3.3兼容的分支。