美文网首页
AFN源码剖析(一)

AFN源码剖析(一)

作者: Hflydragon | 来源:发表于2020-03-30 19:22 被阅读0次

    网上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源码剖析(一)

          本文链接:https://www.haomeiwen.com/subject/esxbuhtx.html