我需要将图像设置为我的 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/