AFN源码解析 | 第二天

338 阅读1分钟

Demo地址

github.com/tanghaitao/…

本篇主要讲解AFN的序列化 SerializationAFURLRequestSerializationAFURLResponseSerialization 两个协议,不是类

001- NSCopying,NSObejct,NSCoding协议
002- contentType初识
003-多表单对数据的封装
004-stream的调用
005-关系解说
006-AFURLResponseSerializer
007-总结

AFURLRequestSerialization

/*
 nsobject:oc对象的基本行为
 NSSecureCoding:抛出异常
 NSCodding:存储数据
 NSCopying:可以自定的类支持拷贝的功能
 */

 // NSCoding: 数据储存 简单 模型对象 ---> 文件 ---> 内存 (不需要任何文件的解析,可以不归档到文件,直接使用NSData,archivedDataWithRootObject)
// 异常 文件: 对象 VS key不匹配,NSSecureCoding就会抛异常 (不会出现假数据)
@protocol AFURLRequestSerialization <NSObject, NSSecureCoding, NSCopying>
+ (BOOL)supportsSecureCoding{
return YES;

[p copy]需要实现下面的函数,copy的意义是归档一次,下次直接用,不需要归档多次
- (id)copyWithZone:(NSZone *)zone{
NSLog(@"来了 拷贝我吧:%@",self);
return self;
}
}

参考github.com/tanghaitao/… ViewController2.m文件

Content-Type

content-type是前后端商量好的一套统一的数据编码类型, get请求:没有content-type选项 post请求中:afn的请求头content-type默认是多表单,设置了seri或者content-type才是json

// contentType ?
// request : request.httpBody
// request.httpBodyStream
// get  para  post para ?
// stream : cfreadStream writeStream?

多表单对数据的封装

参考github.com/tanghaitao/… ViewController.m文件