说起
RunTime
作为iOS开发者就再熟悉不过,面试基本上一大部分原理性的问题都是出自这里。
用c,c++,汇编
共同编写的一套为Object-c
提供动态运行时
功能的API.
程序执行需要:预编译
->编译
->链接
->可执行文件
->装载到内存中
->程序启动
llvm
来完成这一步骤的。主要进行语法、词法分析
;运行时
。在这个过程中我们所做的所有操作都会有系统动态来处理。来自apple
[self hello]
,#selector(@"hello")
。
这一步可以通过xcrun
来验证,最终会编译为objc_msgSend
[self class]
,NSSelectorFromString()
这一步可以再lib-objc
中查看源码objc_msgSend
就是runtime本身的Apillvm+clang
编译层Mach-o
文件