我希望将AFImageCache
类别中默认使用的UIImageView+AFNetworking
替换为基于磁盘且可以更准确地管理的内容(类似{ {3}})。不幸的是,由于UIImageView+AFNetworking
是一个类别而不是子类,我不能仅使用UIImageView
或其他类别的子类覆盖NSURLCache。
有没有其他方法可以实现此功能而无需将大多数UIImageView+AFNetworking
复制并粘贴到我自己的子类中?
答案 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兼容的分支。