Coder Social home page Coder Social logo

huang303513 / sourcecoderesearchandexploration Goto Github PK

View Code? Open in Web Editor NEW
383.0 18.0 120.0 7.52 MB

SDWebImage、AFNetworking、WebViewJavascriptCore、YYModel源码解析

License: Apache License 2.0

Objective-C 54.46% HTML 1.05% JavaScript 43.83% CSS 0.41% Shell 0.06% TypeScript 0.20%

sourcecoderesearchandexploration's Introduction

#AFNetworking源码阅读系列

面向切面编程之 Aspects 源码解析及应用

###2.x学习
AFNetworking 的大体思路
AFNetworking2.0源码解析<一>
AFNetworking2.0源码解析<二>
AFNetworking2.0源码解析<三>
AFNetworking2.0源码解析<四>

###3.x学习
iOS AFNetWorking源码详解(一
iOS AFNetWorking源码详解(二
iOS AFNetWorking源码详解(三
iOS AFNetWorking源码详解(四
iOS AFNetWorking源码详解(五
iOS AFNetWorking源码详解(六

###https学习
iOS安全系列之一:HTTPS
图解SSL/TLS协议
iOS安全系列之二:HTTPS进阶
苹果官网文档关于HTTPS
HTTPS那些事(一)
HTTPS那些事(二)
HTTPS那些事(三)
浅析数字证书
iOS实用技巧 - AFNetworking2安全的使用自签证书访问HTTPS
AFNetworking之于https认证
IOS-AFNetworking3.0配置https说明
iOS 中 HTTPS 证书验证浅析
iOS自签名HTTPS证书单向校验方案

如何使用ip直接访问https网站?
iOS中HTTP/HTTPS授权访问(一)
iOS中HTTP/HTTPS授权访问(二)

###源码阅读系列博客
FMDB源码阅读系列

#YY系列源码学习

###YYCache源码学习参考地址:
YYCache 设计思路
YYCache源码分析(一)
YYCache源码分析(二)
YYCache源码分析(二)

###YYModel源码学习参考地址:
YYModel 源码历险记<一> 代码结构
YYModel 源码历险记<二> 关于变量类型和编码
YYModel 源码历险记<三> 关于ivar,method,property
YYModel 源码历险记<四> 对Class的封装
YYModel 源码历险记<五> YYModelPropertyMeta神奇的next
YYModel 源码历险记<六> YYModelMeta

###YYWebImage学习
读码笔记-YYWebImage源码 (一) - YYWebImageManager
读码笔记-YYWebImage源码 (二) -YYWebImageOperation
读码笔记-YYWebImage源码 (三) -YYImageCache

#SDWebImage的源码分析和学习

###学习博客地址列表,仓库中的部分代码带中文注释持续学习中,待会儿活干完了继续学习: 我自己实现SDWebImage基本功能的demo

SDWebImage源码分析--加载gif图片

图片处理:Image I/O 学习笔记

SDWebImage源码解析之SDWebImageManager的注解

SDWebImage源码解析之SDWebImageManager的注解(2)

SDWebImage源码学习-One

SDWebImage源码剖析(-)

SDWebImage源码剖析(二)

###结构说明: UIImageView+WebCache.h通过SDWebImageManager单列来管理图片的加载、缓存和回调。主要的入口类。

SDWebImageManager通过拥有一个SDImageCacheSDWebImageDownloader来实现图片的缓存和下载器功能。这个类应该是框架的核心和枢纽功能的类。SDWebImageManager是一个单列

UIImage+GIF主要实现了对gif图片的加载功能。

SDWebImageDecoder主要实现图片的解压缩功能,从网络上下载的图片首先需要解压缩以后才能正常显示。这个类专门处理这个工作。

SDImageCache管理着SDWebImage的缓存,其中内存缓存采用NSCache,同时会创建一个ioQueue负责对硬盘的读写,并且会添加观察者,在收到内存警告、关闭或进入后台时完成对应的处理。同时在后台完成磁盘文件的清理、创建等工作。

SDWebImageDownloader主要实现下载功能和下载回调。他通过自定义的操作SDWebImageDownloaderOperation来处理具体的下载。并且管理操作之间的依赖关系为LIFO(后进先出)。这个类是单列。

SDWebImageDownloaderOperation是自定义的并发队列,最直接的负责图片的下载。通过NSURLConnection接口来实现。实现SDWebImageOperation来处理取消下载操作。在下载过程中会发送四个通知用于表示开始下载、停止下载、接收到数据、下载完成。

NSData+ImageContentType用于得到图片数据的具体类型。

##总结

###接口设计简单

通常我们使用较多的UIImageView分类:

通常我们使用较多的UIImageView分类:

[self.imageView sd_setImageWithURL:[NSURL URLWithString:@"url"] placeholderImage:[UIImage imageNamed:@"placeholder"]];

一个简单的接口将其中复杂的实现细节全部隐藏:简单就是美。 采用NSCache作为内存缓

耗时较长的请求,都采用异步形式,在回调函数块中处理请求结果

NSOperation和NSOperationQueue:可以取消任务处理队列中的任务,设置最大并发数,设置operation之间的依赖关系。

图片缓存清理的策略

dispatch_barrier_sync:前面的任务执行结束后它才执行,而且它后面的任务要等它执行完成之后才会执行。

使用weak self strong self 防止retain circle

如果子线程进需要不断处理一些事件,那么设置一个Run Loop是最好的处理方式

sourcecoderesearchandexploration's People

Contributors

huang303513 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sourcecoderesearchandexploration's Issues

afn源码分析文章疑惑

嗨,今天看了阁下分析afn的系列文章,感觉受益匪浅,但是在学习中,我发现,AFN3.0的库这个地方是不是有问题

image

AFURLSessionManagerTaskDelegate这个类是不是根本不需要遵守这几个协议,因为他们的代理方法在这个类中是手动调用的

你代码中文注释

首先感谢你的分享,你有些地方代码中文注释有错误字,举个例子:你在分析sdwebimage第三方库的时候
//如果成功下载图片。并且图片不是图片。则直接缓存和回调
if (downloadedImage && finished) {
[self.imageCache storeImage:downloadedImage imageData:downloadedData forKey:key toDisk:cacheOnDisk completion:nil];
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.