说起
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文件