概念
Objective-C是基于C语言加入面向对象特性和消息转发机制的动态语言,这就是说它不仅需要一个编译器,还需要Runtime
系统动态的创建类和对象,进行消息发送和转发。
我们写的代码在程序运行过程中都会被转化成runtime
的C代码执行,例如[target doSomething]
;会被转化成objc_msgSend(target, @selector(doSomething));
。
OC中一切都被设计成了对象,我们都知道一个类被初始化成一个实例,这个实例是一个对象。实际上一个类本质上也是一个对象,在runtime
中用结构体表示。
runtime
是OC的底层,它就是一套纯C语言的API。那说到这,OC可以运行代码runtime
肯定能运行,runtime
可以运行的程序在OC下未必能够运行。
为什么要熟悉掌握Runtime机制?
Runtime
在实际开发中,会经常用到吗?这个答案是肯定的。但是Runtime
用的好不好在于理解程度,理解的好代码质量高效实用;用的不好,容易自己造坑。在实际开发中,我并不是推荐大家熟悉灵活的运用底层的东西,而是熟悉知道底层的运行机制。要不已经封装好看又好用的API干啥使。
Runtime 具体都干啥使用?
比如:动态添加属性、动态添加方法、方法交换、字典模型转换
网友评论