4

I'm looking to swap out the AFImageCache used by default in the UIImageView+AFNetworking category for something that's disk based and that can managed a little more accurately (something like NSURLCache). Unfortunately, since UIImageView+AFNetworking is a category and not a subclass, I can't just override af_sharedImageCache with a sublclass of UIImageView OR another category.

Is there any other way to achieve this functionality without copying and pasting most of UIImageView+AFNetworking into my own subclass?

4

2 回答 2

6

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

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

如果这个缺点困扰您,另一种想法是使用SDImageCache(包含在SDWebImage项目中)缓存图像,并使用 AFNetworking 自己下载它们。

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

于 2013-06-13T22:13:43.247 回答
2

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

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

于 2013-10-17T04:50:00.817 回答