美文网首页
从点击运行到显示画面经历的那些事

从点击运行到显示画面经历的那些事

作者: dangbo | 来源:发表于2017-03-19 10:29 被阅读13次

    只是介绍重点过程

    • 预编译器
      • 符号化
      • 宏定义的展开
      • import的展开
    • 编译器
      • 语法和语义分析
        • 将符号化后的内容转化为一棵解析树
        • 解析树做语义分析
        • 输出一棵抽象语法树
      • 生成代码和优化
        • AST转换为更低级的中间码 (LLVM字节码)
        • 对生成的中间码做优化
        • 生成特定目标代码
        • 输出汇编代码
    • 汇编器
      • 将汇编代码转换为机器代码。它会创建一个目标对象文件,一般简称为对象文件,文件以 .o 结尾
    • 链接器
      • 将多个目标对象文件合并为一个可执行文件 (.out)
    • 运行
      • dyld开始将可执行文件初始化
      • runtime遍历所有加载进来的Class,按继承层级依次调用Class+load方法和其Category+load方法;至此,可执行文件中和动态库所有的符号(Class,Protocol,Selector,IMP,…)都已经按格式成功加载到内存中,被runtime所管理,再这之后,runtime的那些方法(动态添加 Class、swizzle 等等才能生效)
      • dyld调用main函数
      • 创建UIApplication
      • 创建UIApplicationdelegate对象
      • 开启runloop
      • 程序启动完毕、调用代理的application:didFinishLaunchingWithOptions:
      • application:didFinishLaunchingWithOptions:里面创建window
      • 设置window的根控制器
      • 显示画面

    参考链接:
    iOS 程序 main 函数之前发生了什么
    Mach-O 可执行文件

    相关文章

      网友评论

          本文标题:从点击运行到显示画面经历的那些事

          本文链接:https://www.haomeiwen.com/subject/qmdmnttx.html