AFN源码剖析(一)

网上AFN代码解读和剖析的文章多如牛毛,烦不胜举,但是真正对于一个框架系统全面的认知却是少之又少,这里写一篇关于源码解释及剖析的文章,希望对你有所帮助。

源代码架构

项目结构

这里我们只需要知道,Session封装的是网络请求会话,Serialization封装的是请求及响应的序列化,Security封装的是安全策略,Reachability封装的是网络监测工具类。

这个类中基本每一行代码我都添加了注释,方便大家理解。
如下面的代码注释

/**
 创建的请求缓存策略,默认是‘NSURLRequestUseProtocolCachePolicy’

 @see NSMutableURLRequest -setCachePolicy:
 */
@property (nonatomic, assign) NSURLRequestCachePolicy cachePolicy;

/**
 创建请求是否使用默认的cookie handing,默认为YES.
 如果单个请求想不带cookie可以设置NSMutableURLRequest的HTTPShouldHandleCookies为NO。

 @see NSMutableURLRequest -setHTTPShouldHandleCookies:
 */
@property (nonatomic, assign) BOOL HTTPShouldHandleCookies;

/**
 在收到来自较早传输的响应之前,创建的请求是否可以继续传输数据。 默认为“NO” 。
 通常默认情况下请求和响应是顺序的, 也就是说请求–>得到响应后,再请求.
 如果将HTTPShouldUsePipelining设置为YES, 则允许不必等到response, 就可以再次请求. 这个会很大的提高网络请求的效率,但是也可能会出问题.
 因为客户端无法正确的匹配请求与响应, 所以这依赖于服务器必须保证,响应的顺序与客户端请求的顺序一致.如果服务器不能保证这一点, 那可能导致响应和请求混乱.

 @see NSMutableURLRequest -setHTTPShouldUsePipelining:
 */
@property (nonatomic, assign) BOOL HTTPShouldUsePipelining;

/**
 创建请求的网络服务类型。默认为‘NSURLNetworkServiceTypeDefault’
 @see NSMutableURLRequest -setNetworkServiceType:
 */
@property (nonatomic, assign) NSURLRequestNetworkServiceType networkServiceType;

项目地址为 AFNCodeRead

希望大家一起进步,共同学习。

你可能感兴趣的:(AFN源码剖析(一))