iOS之深入解析YYModel的底层原理
一、前言
- YYModel 是由 ibireme 开发的一套小而精美的模型转换框架,采用分类的形式,无需继承框架的某个基类就可以方便地完成模型的转换,且内部做了自动类型转换和安全处理,可以有效地防止因模型类型和后台给的数据类型不一样而产生的崩溃问题。
- YYModel 的特性:
- 高性能:模型转换性能接近手写解析代码;
- 自动类型转换:对象类型可以自动转换;
- 类型安全:转换过程中,所有的数据类型都会被检测一遍,以保证类型安全,避免崩溃问题;
- 无侵入性:模型无需继承自其他基类;
- 轻量:该框架只有 5 个文件 (包括 .h 文件);
- 文档和单元测试:文档覆盖率 100%,代码覆盖率 99.6%。
- YYModel 将会进行如下自动转换:
JSON/Dictionary | Model |
---|---|
NSString | NSNumber、NSURL、SEL、Class |
NSNumber | NSString |
NSString/NSNumber | 基础类型(BOOL, int, float, NSUInteger, UInt64,…)NaN和Inf会被忽略 |
iOS之深入解析YYModel的底层原理相关推荐
- iOS之深入解析类加载的底层原理:类如何加载到内存中
一.App 启动与 dylb 加载 App 启动会由 libdyld.dylib 库先于 main 函数调用 start,执行 _dyld_start 方法,然后运用汇编实现调用 dyldbootst ...
- iOS之深入解析KVO的底层原理
一.KVO 简介 ① 概念 KVO 全称 Key Value Observing,是苹果提供的一套事件通知机制,允许对象监听另一个对象特定属性的改变,并在改变时接收到事件. 由于 KVO 的实现机制, ...
- iOS之深入解析KVC的底层原理和自定义KVC的实现
一.KVC 简介 ① 定义 KVC 是 Key-Value Coding 的简称,中文译义为键值编码. KVC 是指 iOS 的开发中,可以允许开发者通过 Key 名直接访问对象的属性,或者给对象的属 ...
- iOS之深入解析Runloop的底层原理
一.Runloop 简介 ① 什么是 Runloop ? RunLoop 是事件接收和分发机制的一个实现,是线程相关的基础框架的一部分,一个 RunLoop 就是一个事件处理的循环,用来不停的调度工作 ...
- iOS之深入解析AFNetworking的底层原理
AFNetworking 简介 一.AFNetworking 版本 AFNetworking 是 iOS 最常用的网络框架,虽然系统也有 NSURLSession ,但是一般不会直接用它.AFNetw ...
- iOS之深入解析渲染的底层原理
一.计算机渲染原理 ① CPU 与 GPU 的架构 对于现代计算机系统,简单来说可以大概视作三层架构:硬件.操作系统与进程.对于移动端来说,进程就是 App,而 CPU 与 GPU 是硬件层面的重要组 ...
- iOS之深入解析malloc的底层原理
一.前言 iOS 在创建对象的时候,alloc 方法有三个核心部分:cls->instanceSize(计算需要开辟内存的大小),calloc(开辟内存空间),obj->initlnsta ...
- iOS之深入解析“锁”的底层原理
一.OSSpinLock(自旋锁) 自从 OSSpinLock 出现安全问题,在 iOS10 之后就被 Apple 废弃.自旋锁之所以不安全,是因为获取锁后,线程会一直处于忙等待,造成了任务的优先级反 ...
- iOS之深入解析GCD的底层原理
一.队列 ① 队列实现源码分析 在源码中搜索 dispatch_queue_create 关键字,可以在 queue.c 中发现: dispatch_queue_tdispatch_queue_cre ...
最新文章
- 报名 | 美团是怎样给你推荐外卖的?美团大脑知识图谱详解
- 基于Vue的Quasar Framework 介绍 这个框架UI组件很全面
- 在Python-dataframe中如何把出生日期转化为年龄?
- linux升级补丁tar,Linux下Bash严重漏洞补丁升级方法
- order by居然不能直接在union子句中使用
- javascript写的关于静态页面获取URL传递参数的函数[原创]
- 生成器 python0 1 8 27 64_python 生成式和生成器
- while (n-- > 0) 的用法
- 【软件工程】——项目开发计划
- 轻松实现页面提交时,显示“提交中..” (转帖)
- android模拟器加速,配置android模拟器加速(虚拟化加速)
- mysql中数据处理小技巧
- oracle web创建表空间,oracle 创造表空间常用
- ssm+Vue计算机毕业设计医院人事及科室病区管理(程序+LW文档)
- 启动“山城模式”,重庆能否经得起智能网联汽车的“考验”?
- English Grammer-01
- iOS 开发中添加自定义汉语字体
- 微信小程序录音上传php代码,小程序实现录音上传功能
- mipi两线接口_MIPI接口基础知识
- cocos creator 如何获取单位向量