YYKit之YYModel】的更多相关文章

原文:http://www.cnblogs.com/lujianwenance/p/5706548.html    本文主要是对YYModel文件结构的简单分析,能帮助你更快的熟悉和学习YYModel.如有问题,希望能指正,谢谢. 一.YYCLassInfo文件      YYClassIVarInfo:存放变量的Model      YYClassMethodInfo:存放方法的Model      YYClassPropertyInfo:存放property的Model      YYCla…
前言 iOS的模型框架其实有很多了,去年研究过Mantle,也了解过JSONModel.MJExtension,最近的项目项目优化的时候,再次考虑,基于轻量级.高性能的考虑,最终选择了YYModel. 项目主页 YYModel 简介 YYModel在Github的简介是, iOS/OSX平台下一个高性能的模型框架.下面这张图片展示了原作者的性能比较: 特色功能 高性能:转换效率接近手写代码. 自动类型转换:对象类型能自动转换. 类型安全:在转换过程中所有的类型都会被验证,以确保类型安全. 非侵入…
http://www.tuicool.com/articles/meAzIny         YYModel 简介与使用 http://www.jianshu.com/p/663c7b608ff5     学习YYmodel http://blog.csdn.net/muzhenhua/article/details/50319443       YYKit系列之--YYModel使用(摘自GitHub) http://www.jianshu.com/p/c1d12d77296f     iO…
YYKit出现了很长时间了,一直想要详细解析一下它的源码,都是各种缘由推迟了. 最近稍微闲了一点,决定先从最简单的YYModel开始吧. 首先,我也先去搜索了一下YYModel相关的文章,解析主要API和用法的居多,也有很多人大呼看不懂.其实主要还是要静下心来看,因为YY用了很多并不常见,也不常用的底层API,你一个个去查官方文档会发现,他们并不难. YYModel 里对转换过的model 属性做了缓存.对ClassInfo.MethodInfo.PropertyInfo等做了一层封装,这些也是…
YYModel介绍 YYModel是一个针对iOS/OSX平台的高性能的Model解析库,是属于YYKit的一个组件,创建是ibireme. 其实在YYModel出现之前,已经有非常多的Model解析库,例如JSONModel.Mantle和MJExtension. YYModel从易用性和性能方面均达到了最高水平. 性能   Model解析库对比 特性 High performance: The conversion performance is close to handwriting co…
在使用swfit写代码的过程中,使用了下oc写的字典转模型,发现有些属性转不成功,就萌生了阅读源码的想法. 其实一直都知道Runtime机制,但并没有系统的学习,可能是因为平时的使用比较少,无意间在github上看到了YYModel ,粗略的看了下源码,发现有大量的c方面的知识,就产生了很大的兴趣,因为c总是性能的代名词吗?于是就有了这几篇文章,其实主要的目的还是对平时所学知识的一个总结. 毕竟,人类的记忆总是容易忘记的. 不知道作者在写这个框架时的思想是怎么样一个过程?但字里行间都流露出对代码…
好了,之前的博文中详细的解释了一些辅助的类和辅助的函数,接下来就是使用它们来实现酷炫功能的时候,正所谓磨刀不误砍柴工啊 我们先把总的功能罗列出来 1. json转字典              + (NSDictionary *)_yy_dictionaryWithJSON:(id)json 2. json转模型              + (instancetype)yy_modelWithJSON:(id)json 3. 字典转模型              + (instancetype…
接下来我们继续向下看 typedef struct { void *modelMeta; ///< _YYModelMeta void *model; ///< id (self) void *dictionary; ///< NSDictionary (json) } ModelSetContext; 这是一个c的结构体,在c中 void * 相当于 oc 中的 id 类型 那么 为什么使用c的结构体呢,最主要的使用场景就是我们需要同时使用多个参数的情况下,可以使用c的结构体 /**…
_YYModelMeta   这个内部的类主要是对这个类的描述.包含了和此类转换相关的数据. /// A class info in object model. @interface _YYModelMeta : NSObject { @package YYClassInfo *_classInfo; /// Key:mapped key and key path, Value:_YYModelPropertyMeta. NSDictionary *_mapper; /// Array<_YYM…
本篇文章主要介绍 _YYModelPropertyMeta 前边的内容 首先先解释一下前边的辅助函数和枚举变量,在写一个功能的时候,这些辅助的东西可能不是一开始就能想出来的,应该是在后续的编码过程中 逐步添加的. #define force_inline __inline__ __attribute__((always_inline)) 这行代码用到了C语言的内联函数 内联函数: 是用inline修饰的函数,内联函数在代码层次看和普通的函数结构一样,却不具备函数的性质,内联函数不是在调用时发生控…