AFNetworking看不懂

毫不夸张的说,100%的iOS开发者都知道这个库.

有时候会有去读大牛源码的冲动,但是对于一个新手来说,直接上手去读,看了一天,你会发现,这特么乱七八糟写的什么,老子看不懂!很负责的告诉你这很正常.因为作为一个很牛逼的库,不是随随便便能让人看懂的.

但是,要知道它之所以牛逼,是因为它融合了很多iOS技术,并且做了很多权衡适配.所以,要想了解这个庞然大物,你要了解庞然大物是什么构成的.
这里,我们要做的就是站在前人的肩膀上眺望世界.

  • 你最最最先明确的是AFN其实就是做http/https请求的.第一了解是http/https.(AFN默认做单向验证,想做双向验证,要自己实现里面的一个block属性)
    http是什么
    https是什么
    https单双向验证图解
    https单双项验证详解
    证书自制

  • iOS做http请求从iOS7.0开始推出 NSURLSession ,而AFN也从NSURLConnection 过渡到了 NSURLSession,所以第二先大致了解NSURLSession有关的代理方法都有什么用.

以上了解的差不多了,至少你已经知道AFN的终极目的是什么了.在实现目标除了有构图,还有好多细节.

  • 在AFNetworking2.x中有一个常驻线程用来代理回调,不管哪个版本都有线程之间的切换,其中涉及到的
    NSThread知识
    NSOperation知识
    GCD知识
    RunLoop知识

  • 在3.x中_AFURLSessionTaskSwizzling为了适配NSURLSessionTask在iOS7和iOS8中的不同,用到了
    runtime的知识.
    Method Swizzling

  • 在序列化中也涉及到递归算法

  • 为了适配各种平台或版本用到了预编译指令

知道了上面的知识你才马马虎虎有研究AFN的资本了.
3.x中主要涉及到

  • AFHTTPSessionManager
  • AFURLSessionManager
  • AFNetworkReachabilityManager
  • AFSecurityPolicy
  • AFURLRequestSerialization
  • AFURLResponseSerialization

如果AFN是个不法团伙组织的话!那么他们分工大致是这样的.

AFURLSessionManager是幕后老板,NSURLSession中用到的所有代理方法都经他处理.这家伙还有两个女秘书
AFURLSessionManagerTaskDelegate
_AFURLSessionTaskSwizzling

AFHTTPSessionManager是老板的代言人,所以我们做请求一直接触的就是他.

AFNetworkReachabilityManager是侦查员:负责监管网络环境.

AFSecurityPolicy是安全员:主要负责https安全验证工作

AFURLRequestSerialization是预备队长,发起请求前,要把http需要的请求头,请求参数等等准备工作搞定.

AFURLResponseSerialization是善后队长,负责请求结果的处理,json,xml,image等不同的情况分给不同的小喽啰去做.

至于他们如何精确的运作,请自行小心探索!

你可能感兴趣的:(AFNetworking看不懂)