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