首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Alamofire框架源码学习
CallMeDoby
创建于2021-05-11
订阅专栏
Swift框架Alamofire源码的学习与理解~
等 44 人订阅
共19篇文章
创建于2021-05-11
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Alamofire源码学习(十八): 调用解析
往期导航: Alamofire源码学习目录合集 最近刚换工作,有点忙,没来得及学习。今天有空,随手写点。 简介 之前看的都是按模块功能去分别看的源码实现,其实会比较抽象。学习第三方框架的源码,比较容易
Alamofire源码学习(十七): 工具扩展相关
往期导航: Alamofire源码学习目录合集 简介 Alamofire中对请求相关类型都通过扩展的方式添加了许多方法,这些方法有Alamofire内部业务相关,也有一些辅助工具功能的作用,看清楚后有
Alamofire源码学习(十六): Alamofire中的线程安全
往期导航: Alamofire源码学习目录合集 简介 网络请求都会在异步完成,所以一定会碰到线程安全问题,需要在对某些共享数据读写时,考虑下多线程读写情况下的加解锁,原理很简单:只要在对线程安全敏感的
Alamofire源码学习(十五): 服务器验证处理与身份验证处理
往期导航: Alamofire源码学习目录合集 服务器验证处理 相关文件: ServerTrustEvaluation.swift 简介 当请求需要进行身份验证的时候,URLSessionDelega
Alamofire源码学习(十四): AFError
Alamofire中把整个网络请求从创建请求到响应完成中可能出现的错误,全部封装为AFError枚举对象,并且该枚举的值,大部分都为带参枚举,甚至带有多级参数,在AFError内部定义了多个子枚举来代表不同类型的错误,并扩展AFError,提供了许多简单操作的方法与属性,整个A…
Alamofire源码学习(十三): Cache
上一篇是响应与解析,这篇是缓存,本体很简单,也是用了接口隔离,主要是对HTTPCache的预处理,HTTP的缓存是通过响应头中的相关字段来控制缓存相关参数,URLSession会自动管理缓存,Alamofire定义了一个CachedResponseHandler协议来对缓存进行…
Alamofire源码学习(十二): 响应与解析
定义了两个泛型结构体:DataResponse与DownloadResponse来封装请求的响应,包括:URLRequest, HTTPURLResponse, 响应原始数据(Data格式),序列化后的数据,请求指标数据。DownloadResponse还包括下载文件url,断…
Alamofire源码学习(十一): MultipartFormData与MultipartUpload:多表单数据上传
需要上传多表单数据时,需要将data封装在body中,并且使用分隔符分隔开,Alamofire封装了MultipartFormData类来操作多表单data的封装检测,拼接操作符等操作。 保存的数据类型为bodyParts数组,最终编码入URLRequest对象的操作是在Mut…
Alamofire源码学习(十): URLEncodedFormEncoder--自定义的表单参数编码器
在上一篇Alamofire源码学习(九): ParameterEncoding与ParameterEncoder中有提到, ParameterEncoder协议用来把任何遵循Encodable协议的参数编码添加到URLRequest当中,在默认实现URLEncodedFormP…
Alamofire源码学习(九): ParameterEncoding与ParameterEncoder
协议很简单,也是只有一个方法,把Parameters类型的参数编码进URLRequest中,但是要求Parameters类型必须符合Encodable协议。 ParameterEncoding要求参数是字典类型,字典的value是Any的,编码为url query string…
Alamofire源码学习(八): URLConvertible与URLRequestConvertible
这两个协议抽象了URL与URLRequest,使得创建请求时不再局限于必须使用这两个对象来初始化,可以使用任意符合两个协议的对象即可,方便上层封装解耦。 协议很简单,只有一个方法,遵循该协议的对象只需要实现一个方法,生成一个URL即可。并且该方法可以抛出异常,抛出异常时,Ala…
Alamofire源码学习(七): HTTPMethod与HTTPHeaders
定义了一个结构体来管理HTTPHeader请求头对象数组, 并遵守了几个方便操作的协议。
Alamofire源码学习(六): RequestInterceptor请求拦截器
RequestInterceptor请求拦截器是一个协议,用来在请求流程中拦截请求,并对请求进行一些必要的处理,这是一个组合协议:RequestAdapter请求适配器与RequestRetrier请求重试器。使用者可以自己实现请求拦截器,根据自己的需求适配URLRequest…
Alamofire源码学习目录合集
基于github: Alamofire 5.4.0编写 估计还要写好久, 先把写好的链接整合下, 放在每篇文章开头 之前每次都傻傻的把全部的列表都给卸载每篇文章的开头,每写一篇就要全部文章更新一遍(ಥ
Alamofire源码学习(五): Request的四个子类
DataStreamRequest类似于DataRequest, 不过没有使用一个Data保存全部数据, 而是将受到的数据封装成DataStreamRequest.Stream类型(包括Data,完成,错误),并持有N个用来处理数据流的闭包,在受到请求数据时,对data封装然后…
Alamofire源码学习(四): Request基类
Request类是Alamofire中对URLRequest以及URLSessionTask的封装,持有多个请求参数, 请求状态, 代理对象, 以及一些回调. Request类为基类, 不直接使用, 而是用派生的四个子类来执行请求逻辑: 但是对外的接口统一都为Request对象…
Alamofire源码学习(三): Session相关的其他几个类
只定义了一个结构体:RequestTaskMap, 用来保存Request对象与URLSessionTask的双向映射, 该结构体被Session持有,可以用来快速根据Request找到对应的URLSessionTask, 或者根据URLSessionTask找到对应的Requ…
Alamofire源码学习(二): Session
就这两个常量, 一个是Session类的一个单例, 一个标记了当前版本号. Session类是ALamofire的核心类, 封装了URLSession类, 管理所有的请求调度. Session有两个初始化方法, 一个必要初始化方法, 一个便捷初始化方法. 对于UploadReq…
Alamofire源码学习(一): Almofire文件结构图整理
请求解析,响应解析,错误处理,请求拦截等都基于接口封装, 并提供默认实现, 可以不做任何额外处理直接快速发送请求, 也可以根据自己的业务需要自行实现相应逻辑.