美文网首页
iOS面试总结

iOS面试总结

作者: 阿狸小朋友 | 来源:发表于2020-07-27 11:34 被阅读0次

【1】SDWebImage 5.0流程简述:
1.调用sd_setImageWithURL...方法
2.调用sd_cancelImageLoadOperationWithKey取消正在进行的任务
4.manager调用 loadImageWithURL...,加载图片。(如果url是失败过的或者重试也失败的请求,直接调用callCompletionBlockForOperation...退出)
5.将任务operation(SDWebImageCombinedOperation类型)加入runningOperations容器(NSMutableSet
6.调用callCacheProcessForOperation...从缓存加载图片
1⃣️从内存中通过key取相应的image
2⃣️从磁盘取相应data,调用SDImageCodersManagerdecodedImageWithData...进行解析,根据data的第一个字节判定图片类型,调用相关的解析类进行解析,磁盘的所有操作封装到了block中并放在@autoreleasepool

解析的过程:
data类型转化为CGImageSourceRef,通过CGImageSourceGetCount获取相应的图片个数
如果是1,直接将 data转为image
如果大于1,通过遍历CGImageSourceRef从中取出CGImageRef,并转化为image存到帧数组
最后别放了释放CFRelease(CGImageSourceRef类型对象)

7.调用callDownloadProcessForOperation...进行图片下载
8.下载完成调用callStoreCacheProcessForOperation...,
可存储原始图片(包裹在@autoreleasepool中),也可存储转化的图片(包裹在@autoreleasepool中)

存到内存中:
存到磁盘中:

dispatch_async(self.ioQueue, ^{
          @autoreleasepool {
//存储逻辑
1.检查图片是否包含alpha channel 设置图片的类型 png或者jpeg
2.根据格式编码成data类型(通过CGImageDestinationRef 和 CGImageDestinationAddImage)
3.调用NSFileManager写入本地
 }
});

相关文章

网友评论

      本文标题:iOS面试总结

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