对字典转模型模块的理解
本博客应该会随着时间的推移有所改动,毕竟昨天下班才开始研究MJ老师的MJExtension框架.
记录此博客的目的:为了能更好的理解MJ老师的这套框架!
我研究本框架的方式:从main.m中出发,一层一层的进入.我并不是看,而是一边看一遍理解,再一遍敲代码操作(并非copy).遇到难理解的陌生地方,重建小项目研究.
1,从整体上看,MJExtension主要用了c语言底层的运行时机制,头文件的导入方式为:#import <objc/runtime.h>.
2,在iOS开发中,OC语言最终还是编译成了c语言的代码.从开发的角度来说,OC语言开发:简单,易懂.从代码的运行效率角度来说:使用运行时机制,能提高代码的效率.
3,在本框架中,不仅运用了金典的较底层运行时机制,还应用了效率较高的块语句.里面很多地方用到了块语句的回调.实在是太金典的,反正我想不到.
4,在典转模型模块中主要用到的运行时方法:
(1)class_getSuperclass得到一个类的父类,当当前类为基类的时候,返回nil.
(2)class_copyIvarList获得所有的成员变量,如:Ivar* ivars = class_copyIvarList(c, &count);
(3)ivar_getName获得类中的成员变量名,如:Ivar ivar = ivars[i];const char* name = ivar_getName(ivar);
(4)ivar_getTypeEncoding获得类中成员变量的类型符,如:const char* type = ivar_getTypeEncoding(ivar);
(5)释放内存,如:free(ivars);
主要的就是这些,可能有漏的.
5,到现在为止,我也才理通了字典转模型这一模块.当然也有的地方不明白MJ老师的用意.比如下面这个地方:(红框:代表我的注释,其它都是源代码)
主要用到的就是这些方法.当然,这些方法一看就会.最主要的是怎么应用才是最重要的.所以这个框架,不仅用了很多很高很金典的语法,这套框架的展现了,一个iOS语法在开发中的实际应用的重要性.就用上面的那些方法来说吧,这些方法再笨的人都会用,但不是所有人都能合理的用到实际开发中.我现在才看完了"字典转模型"这一模块,就学到了很多东西.
"与优秀的人在一起,能让自己变得更优秀."
(对这句话的解说:如果你与优秀的人在一起,你就具备了变得更优秀的可能性.为什么只是具备了可能性,因为一切还得要靠自己!)
就如同对象编程中对"异步"一词的理解一样:异步,只是代表了具备开启线程的能力,并非一定要开启多个线程.开不开启,还得要听"操作系统"的.嘿嘿...
好了,我就要开始研究MJExtension框架的其它模块了...
转载于:https://www.cnblogs.com/iOS771722918/p/4453939.html
对字典转模型模块的理解相关推荐
- DAE模型——阅读和理解COLLADA文档(2)
接上文DAE模型--阅读和理解COLLADA文档(1)之后,继续介绍DAE模型的后续内容. (1)library_images模块 在这个模块中只有唯一节点image,其中的ID是使用的纹理文件的文件 ...
- 懒加载 字典转模型 自定义cell
1 懒加载: 1> 什么是懒加载? 懒加载又称为延时加载,即在系统调用的时候加载,如果系统不调用则不会加载.所谓的懒加载其实就是重写其 get 方法. 2> 特点:在使用懒加载的时候要 ...
- swift 3.0 json解析、字典转模型三种方案
swift3.0发布有一段时间了,发现很多朋友在swift3.0json解析上上遇到很多问题,我这边为大家提三种常见的json方案. 1.第一种是自带的字典转模型,自带的需要实现系统的setValue ...
- IOS第四天-新浪微博 -存储优化OAuth授权账号信息,下拉刷新,字典转模型
*************application - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOpti ...
- 懒加载中进行字典转模型
假设有一个flags.plist文件 ZWFlags.h 1 #import <Foundation/Foundation.h> 2 @interface ZWFlags : NSObje ...
- 跟着MJExtension实现简单的字典转模型框架 - 简书
2019独角兽企业重金招聘Python工程师标准>>> 演示代码地址:https://github.com/codeWillwillCode/LearnMJExtension 最简单 ...
- 字典转模型的过程中,空值和id特殊字符的处理
字典转模型的过程中,空值和id特殊字符的处理 在IOS 中id是特殊字符,可是非常多时候从网络中下载的数据是以id保存的 假设在定义属性的时候 @property(nonatomic, copy) N ...
- 广告点击率(CTR)预测经典模型 GBDT + LR 理解与实践(附数据 + 代码)
CTR 系列文章: 广告点击率(CTR)预测经典模型 GBDT + LR 理解与实践(附数据 + 代码) CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解 CTR深度学习模型之 ...
- IOS15之JSON的解析字典转模型
IOS15之JSON的解析字典转模型 IOS15字典转模型 基于 iPhone13运行的. 涉及KVC, #import <Foundation/Foundation.h> NS_ASSU ...
- IOS15之Swift5.5的KVC报错以及JSON转字典转模型
IOS15之Swift5.5的KVC报错以及JSON转字典转模型 最近IOS15升级,导致报错,尝试半天,才解决错误 import UIKit import Alamofire enum Method ...
最新文章
- k均值聚类算法考试例题_K-均值聚类法实例解析
- 【摘自】人民日款网友感悟
- 华南农业大学在Annual Review of Microbiology发表三篇综述文章
- 调制的缺点_电光调制与声光调制原理和应用领域
- OAuth2.0的理解基础
- python爬虫百科-Python爬虫之requests库介绍(一)
- 什么原因导致芯片短路_血压中的低压高是什么原因导致的?会导致什么疾病?...
- memcache和memcached的区别
- php对字符串进行编码,PHP如何使用convert_uuencode()函数对字符串进行编码?
- 如何写 go 代码 (How to Write Go Code 翻译)
- .NET5即至,你准备好了吗?
- 无法启动程序因为计算机中丢失礼包,Win10开机提示“计算机中丢失mfc110u.dll”的解决方法...
- java list填入table_JavaFX从ObservableList填充TableView
- Android 系统编译环境设置及源代码编译
- 第三届蓝桥杯省赛---马虎的算式
- Android apk的安装
- oracle-j2sdk1.8,cloudera-manager – 没有包oracle-j2sdk1.7可用?
- oracle手动锁表和解锁_oracle锁表查询和解锁方法是什么
- ps联盟服务器无响应怎么办,PS联盟网新手教程视频
- 林海峰讲的python_Python面向对象进阶-林海峰篇