AF的代码结构大部分人应该都了解,这里梳理,整体代码有这么几部分:
-
AFURLSessionManager/AFHTTPSessionManager
这里就是AF代码的核心了,主要负责网络请求的发起,回调处理,是在系统网络相关API上的一层封装。大部分逻辑是在AFURLSessionManager里面处理的,AFHTTPSessionManager则是专为HTTP请求提供了一些便利方法。如果需要扩展其他协议的功能(比如FTP协议),可以考虑从AFURLSessionManager创建一个子类。
-
AFURLRequestSerialization/AFURLResponseSerialization
这两兄弟主要处理一些参数序列化相关的工作。AFURLRequestSerialization是将传入的参数构造成NSURLRequest,比如自定义的header,一些post或者get参数等等。 AFURLResponseSerialization主要是将系统返回的NSURLResponse处理成我们需要的responseObject,比如json、xml、image等等
-
AFSecurityPolicy
处理https相关的公钥和验证逻辑。目前由于苹果ATS的开启,基本HTTPS已经成为标配。虽然通常直接使用CA来验证服务器公钥的情况下,不需要我们额外做什么配置。但是从这里出发,顺便考察一下HTTPS相关的知识点,感觉也比较常见,具体面试题可看下文
-
AFNetworkReachabilityManager
这个其实是比较独立的一个模块了,提供获取当前网络状态的功能。
-
UIKit+AFNetworking
这里主要是通过Category来提供了一下UIkit的便利方法
网友评论