源码分析之Alamofire

源码分析


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

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

TaskDelegate是一个基类,Alamofire针对HTTP普通请求、下载、上传提供了相应的子类来进行处理。

Alamofire实现过程中使用了大量的协议、泛型,来实现通用性,代码非常优雅。