iOS第三方学习1-SDWebImage学习和使用
在项目的开发过程中,经常会用到异步加载图片的功能,先从网络上异步下载图片,然后通过UIImageView显示在屏幕上。这个功能基本上所有的联网应用程序都要使用。
SDWebImage 提供异步加载图片、缓存管理、下载进度等功能
SDWebImage有两种缓存,一种是磁盘缓存,一种是内存缓存,框架都提供了相应的方法
1. [UIImageView sd_setImageWithURL: placeholderImage: options: completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {}];
先显示 placeholderImage ,同时由SDWebImageManager 根据 URL 来查找图片。SDWebImageManager是将UIImageView+WebCache同SDImageCache链接起来的类
SDWebImageManager 调用downloadImageWithURL:options: progress: completed:
SDImageCache queryDiskCacheForKey: done:
用来从缓存根据CacheKey查找图片是否已经在缓存中
2.如果从内存中找到了图片,就返回并显示图片;如果没找到,就在硬盘下查找图片
3.如果在硬盘中找到了图片,就返回并显示图片;如果没找到,说明所有缓存都不存在该图片,需要下载该图片
4.SDWebImageDownloader
downloadImageWithURL: options: progress: completed:
5.下载完成后返回并显示图片
图片保存到 SDImageCache 中,内存缓存和硬盘缓存同时保存。
缓存的清理
[[[SDWebImageManager sharedManager]imageCache]cleanDisk];
[[[SDWebImageManager sharedManager]imageCache]clearMemory];
[[NSURLCache sharedURLCache] removeAllCachedResponses];