关于runtime

runtime是什么?

1.runtime 是一套底层的C语言API(包含了很多强大实用的C语言数据类型,C语言函数)

2.实际上,平时我们编写的OC代码,底层都是基于runtime实现的,也就是说,我们编写的OC代码,最终都是转成了底层的runtime代码(C语言代码)

总结:简单明了的说,OC的底层是C语言,而runtime就相当于是OC的幕后工作者,程序的运行都会经过OC代码 ---> runtime的 C 语言代码这一过程。


runtime在有什么作用?

runtime能够动态的生成,修改,删除一个类,一个成员变量,一个方法。


runtime常见的函数,头文件

#import <objc / runtime . h>

Ivar * class_copyIvarList : 获得某个类内部的所有成员变量    Ivar:成员变量

Method * class _copyMethodList : 获得某个类内部的所有方法   Method:成员方法

Method class_getInstanceMethod : 获得某个实例方法(对象方法,减号— 开头)

Method class_getClassMethod : 获得某个类方法(加号+开头)

Method_exchangeImplementations : 交换2个方法的具体实现


我们在实际开发中调用方法实际发生了什么呢?

[self  printMessageWithString:@"Hello World!"];

它实际上会被编译器翻译成:

objc_msgSend(self,@selector(printMessageWithString:),@"Hello World!")


runtime的相关应用:

1.封装框架,runtime机制在实际开发中的主要用途

2.NSCoding(归档,解档,利用runtime遍历模型对象的所有属性)

3.NSDictionary:(利用runtime遍历模型对象的所有属性, 根据属性名从字典中取出对应的值, 设置到模型的属性上

4.KVO(利用了runtime动态的产生一个类)



发布了37 篇原创文章 · 获赞 8 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章