版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.03.01 |
前言
我们做APP发起网络请求,都离不开一个非常有用的框架AFNetworking,可以说这个框架的知名度已经超过了苹果的底层网络请求部分,很多人可能不知道苹果底层是如何发起网络请求的,但是一定知道
AFNetworking
,接下来几篇我们就一起详细的解析一下这个框架。感兴趣的可以看上面写的几篇。
1. AFNetworking源码探究(一) —— 基本介绍
2. AFNetworking源码探究(二) —— GET请求实现之NSURLSessionDataTask实例化(一)
3. AFNetworking源码探究(三) —— GET请求实现之任务进度设置和通知监听(一)
4. AFNetworking源码探究(四) —— GET请求实现之代理转发思想(一)
5. AFNetworking源码探究(五) —— AFURLSessionManager中NSURLSessionDelegate详细解析(一)
6. AFNetworking源码探究(六) —— AFURLSessionManager中NSURLSessionTaskDelegate详细解析(一)
7. AFNetworking源码探究(七) —— AFURLSessionManager中NSURLSessionDataDelegate详细解析(一)
8. AFNetworking源码探究(八) —— AFURLSessionManager中NSURLSessionDownloadDelegate详细解析(一)
9. AFNetworking源码探究(九) —— AFURLSessionManagerTaskDelegate中三个转发代理方法详细解析(一)
回顾
我们先看一下我们前几篇都做了什么,前几篇以GET请求为例,详述发起网络请求的过程,然后,讲述了AFURLSessionManager
中实现的NSURLSession的几个苹果原生的代理。最后,讲述了AFURLSessionManagerTaskDelegate
中的三个转发的代理。从这篇开始讲述从网络请求回数据的解析。
本篇主要讲述AFN中response数据解析的架构处理。
数据解析的类和协议
关于数据解析的类和接口,都存在AFURLResponseSerialization
这个文件中,我们首先看一下这个文件中有多少类,以及它们是什么关系的。
@protocol AFURLResponseSerialization <NSObject, NSSecureCoding, NSCopying>
@interface AFHTTPResponseSerializer : NSObject <AFURLResponseSerialization>
@interface AFJSONResponseSerializer : AFHTTPResponseSerializer
@interface AFXMLParserResponseSerializer : AFHTTPResponseSerializer
@interface AFXMLDocumentResponseSerializer : AFHTTPResponseSerializer
@interface AFPropertyListResponseSerializer : AFHTTPResponseSerializer
@interface AFImageResponseSerializer : AFHTTPResponseSerializer
@interface AFCompoundResponseSerializer : AFHTTPResponseSerializer
一共这么多的类和协议,看到这里很清楚了吧,父类是AFHTTPResponseSerializer
,遵守协议AFURLResponseSerialization
,其他的类都继承这个父类,可以看这张图更清晰些。
数据解析的架构设计
AFN中对数据解析的架构是如何进行设计的呢?
从大的方面来讲,就是一个父类继承协议,其他类继承这个父类,根据解析数据类型不同,都实现了它们父类遵守的协议,进行数据解析。
这个架构,大家是可以进行学习和了解的。
后记
本篇主要介绍了AFN中数据解析文件AFURLResponseSerialization的类和协议,介绍了他们之间的关系,并分析了进行数据解析的架构。