源码分析之Alamofire
源码分析
Alamofire
是对URLSession
的封装,针对普通请求,上传、下载等操作,提供对应的Request
,其对象关系如下:

每一个Request
关联一个TaskDelegate
,TaskDelegate
用来处理URLSessionTask
使用过程中的网络回调,TaskDelegate
有一个queue
成员,用来执行task
完成后的回调处理,completionHandler
默认会在主线程回调。Alamofire
有一个SessionDelegate
,对Session
的所有网络回调做处理,并调用每一个task
的TaskDelegate
,正因为SessionDelegate
只有一个实例,所以会涉及到线程安全的问题,对某些关键属性需要做竟态处理,如管理Request
的字典。委托处理流程如下图所示:

TaskDelegate
是一个基类,Alamofire
针对HTTP
普通请求、下载、上传提供了相应的子类来进行处理。
Alamofire
实现过程中使用了大量的协议、泛型,来实现通用性,代码非常优雅。