本博客应该会随着时间的推移有所改动,毕竟昨天下班才开始研究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

对字典转模型模块的理解相关推荐

  1. DAE模型——阅读和理解COLLADA文档(2)

    接上文DAE模型--阅读和理解COLLADA文档(1)之后,继续介绍DAE模型的后续内容. (1)library_images模块 在这个模块中只有唯一节点image,其中的ID是使用的纹理文件的文件 ...

  2. 懒加载 字典转模型 自定义cell

    1 懒加载: 1>  什么是懒加载? 懒加载又称为延时加载,即在系统调用的时候加载,如果系统不调用则不会加载.所谓的懒加载其实就是重写其 get 方法. 2>  特点:在使用懒加载的时候要 ...

  3. swift 3.0 json解析、字典转模型三种方案

    swift3.0发布有一段时间了,发现很多朋友在swift3.0json解析上上遇到很多问题,我这边为大家提三种常见的json方案. 1.第一种是自带的字典转模型,自带的需要实现系统的setValue ...

  4. IOS第四天-新浪微博 -存储优化OAuth授权账号信息,下拉刷新,字典转模型

    *************application - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOpti ...

  5. 懒加载中进行字典转模型

    假设有一个flags.plist文件 ZWFlags.h 1 #import <Foundation/Foundation.h> 2 @interface ZWFlags : NSObje ...

  6. 跟着MJExtension实现简单的字典转模型框架 - 简书

    2019独角兽企业重金招聘Python工程师标准>>> 演示代码地址:https://github.com/codeWillwillCode/LearnMJExtension 最简单 ...

  7. 字典转模型的过程中,空值和id特殊字符的处理

    字典转模型的过程中,空值和id特殊字符的处理 在IOS 中id是特殊字符,可是非常多时候从网络中下载的数据是以id保存的 假设在定义属性的时候 @property(nonatomic, copy) N ...

  8. 广告点击率(CTR)预测经典模型 GBDT + LR 理解与实践(附数据 + 代码)

    CTR 系列文章: 广告点击率(CTR)预测经典模型 GBDT + LR 理解与实践(附数据 + 代码) CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解 CTR深度学习模型之 ...

  9. IOS15之JSON的解析字典转模型

    IOS15之JSON的解析字典转模型 IOS15字典转模型 基于 iPhone13运行的. 涉及KVC, #import <Foundation/Foundation.h> NS_ASSU ...

  10. IOS15之Swift5.5的KVC报错以及JSON转字典转模型

    IOS15之Swift5.5的KVC报错以及JSON转字典转模型 最近IOS15升级,导致报错,尝试半天,才解决错误 import UIKit import Alamofire enum Method ...

最新文章

  1. k均值聚类算法考试例题_K-均值聚类法实例解析
  2. 【摘自】人民日款网友感悟
  3. 华南农业大学在Annual Review of Microbiology发表三篇综述文章
  4. 调制的缺点_电光调制与声光调制原理和应用领域
  5. OAuth2.0的理解基础
  6. python爬虫百科-Python爬虫之requests库介绍(一)
  7. 什么原因导致芯片短路_血压中的低压高是什么原因导致的?会导致什么疾病?...
  8. memcache和memcached的区别
  9. php对字符串进行编码,PHP如何使用convert_uuencode()函数对字符串进行编码?
  10. 如何写 go 代码 (How to Write Go Code 翻译)
  11. .NET5即至,你准备好了吗?
  12. 无法启动程序因为计算机中丢失礼包,Win10开机提示“计算机中丢失mfc110u.dll”的解决方法...
  13. java list填入table_JavaFX从ObservableList填充TableView
  14. Android 系统编译环境设置及源代码编译
  15. 第三届蓝桥杯省赛---马虎的算式
  16. Android apk的安装
  17. oracle-j2sdk1.8,cloudera-manager – 没有包oracle-j2sdk1.7可用?
  18. oracle手动锁表和解锁_oracle锁表查询和解锁方法是什么
  19. ps联盟服务器无响应怎么办,PS联盟网新手教程视频
  20. 林海峰讲的python_Python面向对象进阶-林海峰篇

热门文章

  1. flask的跨域问题
  2. DWRUtil.addOptions
  3. 2018.1.30-31 开始racket,避免mutation,lazy evaluation
  4. 【转】计算机键盘功能键作用
  5. 【转】opencv 配置
  6. bzoj 3123 [Sdoi2013]森林
  7. Linux添加磁盘和挂载
  8. HDU 4417 划分树写法
  9. Vue学习笔记(四)
  10. VC++:如何将程序最小化到托盘 [转]