ios - UIImageView+AF联网及保存图片

标签 ios objective-c caching afnetworking

我需要将图像设置为我的 imageView。而且图片很多(我想会接近200mb)。我需要保存所有内容,以便在没有互联网连接的情况下在本地使用应用程序。使用类别UIImageView+AFNetworking非常好用,但我不明白它如何保存以及在哪里?

所以在订阅方法here时 ,您可以看到它使用了 NSURLCacheStorageAllowed 的缓存策略。那么图像保存在磁盘上的缓存文件夹中,对吧?没问题,但是这个存储的限制是多少?我需要实现下一个代码吗:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  //another code...
  NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024 
                                                   diskCapacity:200 * 1024 * 1024 
                                                       diskPath:nil];
  [NSURLCache setSharedURLCache:URLCache];
  return YES;
}

因此,NSURLCacheStorageAllowed 的返回方式与 NSCachedURLResponse 中的 storagePolicy 类似。所以我明白我不能实现我上面写的代码。

如果我使用 UIImageView+AFNetworking 类别,我的所有图像都会保存在本地缓存存储中吗?

最佳答案

正如您所发现的,UIImageView+AFNetworking 依赖于基础 URL 加载系统将数据缓存到磁盘。 diskCapacity 将确定您的应用一次需要多少存储空间。这还依赖于服务器在向您传递图像时指定适当的 Cache-Control header - 在某些情况下,如果缓存时间太短,NSURLCache 根本不会存储它。

要更好地控制客户端的磁盘缓存,您可以查看 SDWebImage

SDWebImage 具有异步图像下载功能,对缓存有很多控制 - 哪些图像被缓存、缓存多长时间、在磁盘中还是在内存中等。如果您需要保证图像存储特定的时间,UIImageView +AFNetworking 可能无法为您提供所需的控制,您应该探索这种替代方案。

关于ios - UIImageView+AF联网及保存图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21450451/

相关文章:

objective-c - NSTextView 中类似搜索的高亮显示

ios - UIButton 设计工具

ios - SpriteKit 场景

iphone - 如何触发属性更改的方法?

SQL 查询返回 Apache Ignite 缓存的空结果

caching - 缓存寻址方法困惑

android - 我们如何在流式传输后缓存 HLS 视频 url

ios - 为什么不能多次使用 MPMoviePlayerController?

ios - inout 参数的外部实例的 Swift 内存地址与复制的实例相同

objective-c - 在 Objective-C 中,在头文件中定义某些东西(比如属性)与在 .m 文件中定义有什么区别?