YYModel底层解析- Runtime

 这段时间一直在忙新的需求,没有时间来整理代码,发表自己技术博客,今天我们来看一下YYModel的底层解析以及如何使用,希望对大家有所帮助!

 

一 概述

概括

YYModel是一个轻量级的JSON模型转换库,它的思路非常清晰代码风格也很好,所以还是建议大家看一下底层实现的逻辑,也可以从源码加深对Runtime的理解。

简介

下面是YYModel第三方库的一些代码结构。

YYModel的总共文件只有5个文件

除掉YYModel.h之外,只剩下了YYClassInfo和NSObject+YYModel两个模块啦!

  • YYClassInfo功能主要是将Runtime层级中的一些结构体封装到NSObject中调用;

  • NSObject+YYModel功能是提供调用的接口以及实现具体的模型转换逻辑。

前面已经讲到YYClassInfo主要功能是将Runtime层级的结构体封装到NSObject层级以便调用。下面是YYClassInfo与Runtime层级对比:

 

二、详细

1.YYClassIvarInfo

YYClassIvarInfo && objc_ivar

下面是YYClassIvarInfo

复制代码
/**  Instance variable information.  */@interface YYClassIvarInfo : NSObject @property (nonatomic, assign, readonly) Ivar ivar;              ///< ivar opaque struct @property (nonatomic, strong, readonly) NSString *name;         ///< Ivar's name @property (nonatomic, assign, readonly) ptrdiff_t offset;       ///< Ivar's offset @property (nonatomic, strong, readonly) NSString *typeEncoding; ///< Ivar's type encoding @property (nonatomic, assign, readonly) YYEncodingType type;    ///< Ivar's type /**  Creates and returns an ivar info object.    @param ivar ivar opaque struct  @return A new object, or nil if an error occurs.  */- (instancetype)initWithIvar:(Ivar)ivar; @end
复制代码

紧接着我们看一下Runtime的objc_ivar表示变量的结构体

复制代码
struct objc_ivar {     char * _Nullable ivar_name OBJC2_UNAVAILABLE; // 变量名称    char * _Nullable ivar_type OBJC2_UNAVAILABLE; // 变量类型    int ivar_offset OBJC2_UNAVAILABLE; 
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信