前言:YYModel是一个轻量级的model与dictionary相互转换的框架,代码结构简单,使用简单,性能不错
一,使用:
// 将 JSON (NSData,NSString,NSDictionary) 转换为 Model:
User *user = [User yy_modelWithJSON:json];
// 将 Model 转换为 JSON 对象:
NSDictionary *json = [user yy_modelToJSONObject];
二,源代码分析
1,JSON转model
User *user = [User yy_modelWithJSON:json];
1:为判断类型,即把NSData,NSString,NSDictionary转为NSDictionary
2:方法变为把NSDictionary转为model的问题,继续看
1:获取类对象
2:"返回缓存的模型类元数据"??
3:创建一个model对象
4:关键一步,继续看
00:使一个数组所有的元素作用于某个函数,
参数1,数组,这里应该取了所有类的所有属性
参数2,范围
参数3,作用函数
参数4,不懂(应该是上下文传递的一些预留参数)
参数3的作用函数,继续
接下来是C的函数式编程模型,现在的思路是,我们要给model赋值需要什么?3个东西,model实例,value,value对应的setter方法,刚好对应上图的1,2,3;方法4是进行赋值,继续:
最后一步,正在的赋值操作,判断值的类型,然后使用objc_msgSend方法进行赋值操作
三,类/方法名解释
1.NSNull:作为数组中的空值占位符 kCFNull:与NSNull一样
2,object_getClass(self):获取上一级的类(对象),[self class],self是实例时返回类对象,类时,返回自己,直至根元类
类也是一个对象,实例往上是: