美文网首页
SDWebImage分析

SDWebImage分析

作者: iOS白水 | 来源:发表于2018-01-30 15:33 被阅读0次

    1.加载大图片内存为什么暴涨
    图片解码很耗时。 异步。
    当用 UIImage 或 CGImageSource 的那几个方法创建图片时,生成的对象不会立即解码,而是当图片设置到 UIImageView 或者 CALayer.contents 中去,并且 CALayer 被提交到 GPU 前,CGImage 中的数据才会得到解码。解码都是在主线程中,影响性能.

    2.基础流程
    2.1取消当前NSOperation请求 :
    从 UIView关联对象 Dictionary 获取当前的Op,key是 各种UI 不同状态的key,比如 UIImageViewHighlightedWebCacheOperationKey 或者UIImageViewImageLoad
    主线程设置:placehoder
    开启一个NSOpertaion请求
    SDWebImageManager.sharedManager
    同时设置 key,开始进行操作

    2.1SDWebImageManager.sharedManager
    2.1.0 SDWebImageManager核心变量
    NSMutableArray *runningOperations:运行任务数组
    SDImageCache *imageCache:缓存器
    SDWebImageDownloader *imageDownloader;下载器

    2.1.1 是否存储在失败faileURLs
    @synchronized (self.failedURLs) {
    isFailedUrl = [self.failedURLs containsObject:url];
    }
    2.1.2
    SDWebImageCombinedOperation
    封装一个NSOperation *cacheOperation 还有协议

    @synchronized (self.runningOperations) {
        [self.runningOperations addObject:operation];
    }
    

    2.1.3. 生成
    operation.cacheOperation = [self.imageCache queryDiskCacheForKey:key done:^(UIImage *image, SDImageCacheType cacheType) {
    主读取NSCache
    创建一个NSOp, 异步串行

    2.1.4子任务 下载器
    id <SDWebImageOperation> subOperation = [self.imageDownloader downloadImageWithURL:url
    并发队列 5

    相关文章

      网友评论

          本文标题:SDWebImage分析

          本文链接:https://www.haomeiwen.com/subject/rijczxtx.html