分别是通过Objective-C源代码,通过Foundation框架的NSObject类定义的方法,通过对runtime函数的直接调用。大部分情况下你就只管你写的Objc代码就行,runtime系统自动在幕后辛勤劳作。
1.将某些OC代码转为运行时代码
OC代码实现的功能,运行时代码均可以实现。
2.替换系统方法
拦截系统自带的方法调用(swizzle黑魔法),也可以说成对系统的方法进行替换。
3.实现分类也可以添加属性
分类正常来说只有拓展EXtension才可以添加属性,分类Category是不可以添加属性的,但是利用运行时可以添加属性。
4.自动归档和自动解档
说白了,就是遍历属性,不用一个属性一个属性的去写,简单。
5.字典和模型的自动转换
还是遍历属性,利用属性做文章。
6.动态增加方法(动态的为某个类或对象增加一个)
对某一个功能做拓展。
7.动态变量控制
动态对某个对象的变量的值进行替换。
8.实现万能控制器跳转
推送过来的消息,要跳转到任意控制器,利用runtime动态生成对象、属性、方法这特性。
9.插件开发
通过头文件猜测方法的作用,swizzle这些方法,插入自己的代码实现插件逻辑。
10.JSpatch热更新
在线修复版本bug,微信也使用了该技术。