RunTime简称运行时。就是系统在运行的时候的一些机制,其中最主要的是消息机制。
RunTime是一套比较底层的纯C语言API,属于1个C语言库,包含了很多底层的C语言API。
在我们平时编写的OC代码中,程序运行过程时,其实最终都是转成了runtime的C语言代码。
XCode7使用Runtime:
objc_msgSend()报错Too many arguments to function call ,expected 0,have3
解决方案: 关闭msg检查机制
###一、发送消息
本质:
方法调用的本质,就是让对象发送消息。
方法:
objc_msgSend(id self
,SEL op, ...
)
Flower.h文件中
1 |
|
Flower.m文件中
1 |
|
RuntimeViewController.m文件中(消息机制应用):
1 |
|
###二、方法交换
场景:
系统自带的方法功能不够,保持原有的功能给系统自带的方法扩展一些功能。
方法:
class_getClassMethod(__unsafe_unretained Class cls
,SEL name
)
method_exchangeImplementations(Method m1
,Method m2
)
说明:
Ivar : 成员变量 如果要是动态创建/修改/查看属性,可以使用Ivar。
Method : 成员方法 如果要是动态创建/修改/查看方法,可以使用Method。
拓展阅读:
RunTime Method
RuntimeViewController.m文件中(方法交换应用):
1 |
|
未完待续…