iOS开发代码段iOS源码分析iOS第三方框架使用和分析

iOS(初-中)级 (如何熟练运用SDWebImage,傻瓜学多

2016-03-09  本文已影响440人  傻瓜芃

SDWebImage

这个对iOS 初级学者来说都是一个 应用 非常普遍的 第三方框架 我个人认为 这个第三方框架 在ios里 所有第三方框架中最牛b的框架 (没有之一) 比AFN 还要好. 因为它能解决开发者 对与图片的处理问题 .

认识

很多开发者认为SDWebImage 不就是个下载图片吗 一句话吗
[self sd_setImageWithURL:[NSURL URLWithString:@""] placeholderImage:[UIImage imageNamed: @""]];
你要真这么想 或者 我就只会用这个方法 那我就真的呵呵了

深入探解

问你几个问题 第一个请问[self sd_setImageWithURL:[NSURL URLWithString:@""] placeholderImage:[UIImage imageNamed: @""]]; 写入这个方法 之后 SDWebImage 会自动帮你生成在沙盒里
那么 图片在沙河默认存储周期 是多久?
会修改和限制你的缓存和大小吗? 会利用SDWeb清除缓存吗?

回答

SD 会自动保存沙盒 里的图片为一周

![屏幕快照 2016-03-08 下午11.23.53.png](http:https://img.haomeiwen.com/i1397692/fb000a71578c4734.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

在SDImageCache.h里

/**
 * The maximum size of the cache, in bytes.
 */
@property (assign, nonatomic) NSUInteger maxCacheSize;

这句话就是 限制内存大小 因为是 bytes 比如图片内存限制为20M 那么应该写 20 * 1024*1024

怎么利用SDWeb清除缓存 在appDelegate

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
    // 清除内存缓存
    [[SDWebImageManager sharedManager].imageCache clearMemory];
    // 取消所有下载
    [[SDWebImageManager sharedManager] cancelAll];
}

大家注意哈 这个清除内存缓存 到底有啥用 记住这样一句话 除非你的图片正在展示 但凡在屏幕以外的图片 都会被清除 并且不会刷新加载图片!

SDWebImage

    [cell.imageView sd_setImageWithURL:[NSURL URLWithString:app.icon] placeholderImage:[UIImage imageNamed:@"placeholder"] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {
        // expectedSize: 图片的总字节数
        // receivedSize: 已经接收的图片字节数
        
        NSLog(@"下载进度:%f", 1.0 * receivedSize / expectedSize);
    } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        NSLog(@"下载完图片");
    }];

options 一般填写0 也可以选别的选项 比如 SDWebImageRetryFailed = 1 << 0, 就是下载失败从新下载

后期会写一个SDWebImage简单的 内部实现原理

就是SDWebImage 如和做到保存沙河路径 保存内存 cell的加载图片 如何避免 cell引起的重用问题,如何避免用户加载图片错位问题 第二次加载 如何从沙盒路径获取的一个流程

上一篇下一篇

猜你喜欢

热点阅读