YYModel 源码历险记:代码结构

424 查看

前言

因为公司需要开发一个内部使用的字典转模型的项目,所以最近也是在看关于字典转模型的内容。有Mantle,jsonModel,MJExtension等众多框架,最后还是选择了先从YYModel源码读起,发现一边读着读着我的膝盖就掉下去了,于是想总结一下自己在阅读源码的过程中收获的知识点

目录结构

工程目录.png

打开项目工程一开始以为只有2个类应该不会太难读懂,结果仔细点开一看,我膝盖骨也掉了,YY对NSObject中的一些内容进行了又一次的封装,增加了许多描述的内容,经过一番梳理,我整理出了一张结构图

代码结构.png

理解

  1. YYClassInfo 是对于Class进行了封装,进行封装增加描述
    • YYClassIvarInfo 对 Class的Ivar进行了进行封装增加描述
    • YYClassMethodInfo 对 Class 的 Method进行封装增加描述
    • YYClassPropertyInfo 对 Class 的 Property进行了封装描述
  2. YYModel :
    • YYModelMeta 对YYClassInfo进行封装描述
    • YYModelPropertyMeta对YYClassProperty进行封装描述

主要类别

  1. NSObject(YYModel) : 提供一些字典模型互转的方法,将对key/value进行匹配,赋值给Model对应的property
  2. NSArray(YYModel): 为NSArray提供字典转模型的方法
  3. NSDictionary(YYModel):为NSDictionary提供字典转模型方法