美文网首页
iOS App的启动过程

iOS App的启动过程

作者: 雪贝壳 | 来源:发表于2022-11-18 12:33 被阅读0次

    1.iOS系统首先会加载解析该app的info.plist文件,因为info.plist中包含了支持app加载进行所需要的众多key value配置信息。比如app的运行条件(required device capabilities),是否全屏,app启动图信息等。
    2.创建沙盒-iOS8以后,每次启动app都会创建新的沙盒路径,所以我们存储文件时要用相对路径,否则重新启动app后沙盒路径发生变化,会读取不到数据。
    3.根据info.plist的配置检查相应权限状态
    4.加载MachO文件读取dyld路径,并运行dyld动态连接器(内核加载了主程序,dyld只会负责动态库的加载)

    • 首先dyld会寻找合适的cpu运行环境
    • 然后加载程序运行所需的依赖库和我们自己写的.h .m文件编译成的.O可执行文件,并对这些库进行链接
    • 加载所有方法(runtime就是在这个时候被初始化并完成OC的内存布局)
    • 加载C函数
    • 加载category的扩展(此时runtime会对所有类结构进行初始化)
    • 加载C++静态函数,加载OC的+load方法
    • 最后dyld返回main函数地址,main函数被调用

    由此可延伸出另外两个问题,可以参看我的其他文章:
    MachO文件的结构:MachO文件的结构
    启动优化可以怎么做:iOS App启动优化

    相关文章

      网友评论

          本文标题:iOS App的启动过程

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