美文网首页程序员iOS开发记录iOS学习开发
iOS基础 - 从点击应用图标说起

iOS基础 - 从点击应用图标说起

作者: Super_Luis | 来源:发表于2018-08-29 20:01 被阅读20次

    iOS从点击一个应用图标到程序主页面显示出来经历了哪些过程呢?

    我们可以把启动过程分为main函数之前和main函数之后两个部分。

    main函数之前

    1.加载可执行文件

    2.加载动态链接库加载器dyld

    3.dyld递归加载dylibs

    dyld加载过程

    我们首先学习dyld加载过程,主要分5个部分。可以参考这里

    image

    1.Load dylibs

    • 解析所依赖的dylibs
    • 找到所需的mach-o文件
    • 打开和读取文件然后验证有效性
    • 注册代码签名
    • 每一个segment调用mmap()

    2.Rebase

    • 对镜像调整指针。

    3.Bind

    • 设置指针指向外部的镜像。

    4.Objc

    • 大部分的初始化工作已经通过Rebase和Bind做完
    • 注册所有的Objc类
    • 将category插入到方法列表
    • 保证方法唯一

    5.Initializers

    • 调用Objc和分类的+load方法
    • Dyld调用main()函数

    main函数之后

    main函数之后我们可以看下面这张图:


    image
    int main(int argc, char * argv[]) {
        @autoreleasepool {
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }
    

    1. main() 执行UIApplicationMain()

    2. UIApplicationMain()创建UIApplication

    3. UIApplicationMain()创建AppDelegate并复制

    4. UIApplication创建并管理RunLoop

    5. UIApplication调用application:didFinishLaunchingWithOptions:

    6. application:didFinishLaunchingWithOptions:创建并显示Application Window

    7. Application Window设置根控制器Root View Controller

    相关文章

      网友评论

        本文标题:iOS基础 - 从点击应用图标说起

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