这半年项目从RN转到原生,学习了iOS开发的皮毛后,我也深度参与iOS端的重构工作。折腾小半年项目终于上线。所以这两天抽时间阅读了runtime的源码,趁着还没忘赶紧整理记录一下。
- Runtime 介绍
- Runtime 可调式源码
- Runtime 思维导图
Runtime 介绍
因为Objective-C是一门动态语言,所以它将一些决策工作从编译、连接过程推迟到运行时。所以只有编译器是不够的,还需要一个运行时系统 (runtime system) 来执行编译后的代码。这就是 Objective-C Runtime 系统存在的意义,它是整个Objective-C运行框架的一块基石。
Runtime 可调式源码
想要更直观的认识runtime过程,还是直接跟踪、阅读源码比较合适。所以我从网上找了一份可以跟踪调试的 runtime-750 源码。Clone下来,在Xcode中直接运行即可,target选择debug-objc。
找到 main.m文件,在对象方法调用前面打上断点,就可以跟踪代码的运行啦!
Runtime 思维导图
结合阅读源码,画出了消息传递、转发的思维导图,如下: