关于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动态的产生一个类)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值