YYModel框架源代码分析

前言: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的问题,继续看

YYModel框架源代码分析_第1张图片

1:获取类对象

2:"返回缓存的模型类元数据"??

3:创建一个model对象

4:关键一步,继续看

YYModel框架源代码分析_第2张图片

00:使一个数组所有的元素作用于某个函数,

参数1,数组,这里应该取了所有类的所有属性

参数2,范围

参数3,作用函数

参数4,不懂(应该是上下文传递的一些预留参数)

参数3的作用函数,继续

YYModel框架源代码分析_第3张图片

接下来是C的函数式编程模型,现在的思路是,我们要给model赋值需要什么?3个东西,model实例,value,value对应的setter方法,刚好对应上图的1,2,3;方法4是进行赋值,继续:

YYModel框架源代码分析_第4张图片

最后一步,正在的赋值操作,判断值的类型,然后使用objc_msgSend方法进行赋值操作



三,类/方法名解释

1.NSNull:作为数组中的空值占位符  kCFNull:与NSNull一样

2,object_getClass(self):获取上一级的类(对象),[self class],self是实例时返回类对象,类时,返回自己,直至根元类

类也是一个对象,实例往上是:


YYModel框架源代码分析_第5张图片

你可能感兴趣的:(YYModel框架源代码分析)