runtime运行时


1.runtime使用的是运行时机制,它是一套C语言的框架
2.runtime库里面包含了跟类、成员变量、方法相关的 API
3.runtime能获取类里面的所有成员变量,为类动态添 加成员变 量,动态改变类的方法实现,为类动态添加新的方法等 
4.使用runtime需要导入<objc/message.h><objc/runtime.h> 
5.我们编写的OC代码,最终都转化成runtime库里的东西,例如类转化成路里的结构体等数据类型,而方法转成了 runtime库里面的C语言函数 ,平时调方法都是转成了objc_msgSend 函数 ,即每个方法在运行时会被动态转为消息发送 
6.使用objc_msgSend 函数个过程:
6.1.objc 在向一个对象发送消息时,runtime 库会根据对象的 isa 指针找到该对象实际所 属的类 
6.2.然后在该类中的方法列表以及其父类方法列表中寻找方法运行 
6.3.如果,在最顶层的父类(一般也就 NSObject)中依然找不到相应的方法时,程序在 运行时会挂掉并抛出异常 unrecognized selector sent to XXX 
6.4.但是在这之前,objc 的运行时会给出三次拯救程序崩溃的机会,这三次拯救方法没有实现,程序就会崩溃
6.5.三次拯救的第一次拯救方法: resolveInstanceMethod 
6.6.三次拯救的第二次拯救方法: -forwardingTargetForSelector: 
6.7.三次拯救的第二次拯救方法: -methodSignatureForSelector:如果这个方法返回nil,就实现-methodSignatureForSelector: 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值