美文网首页iOS面试集
iOS App 启动过程

iOS App 启动过程

作者: 搬砖的crystal | 来源:发表于2024-01-04 11:47 被阅读0次

App 启动分类
冷启动:启动时,App 的进程不在系统里,需要开启新进程。
热启动:启动时,App 的进程还在系统里,不需要开启新进程。

冷启动过程

App完整的启动流程
主要分为三个阶段:
(1)main()函数执行前( pre-main 阶段)
(2)main()函数执行后(从 main 函数执行,到设置 self.window.rootViewController 执行完成)
(3)首屏渲染完成后(从 self.window.rootViewController 执行完成到 didFinishLaunchWithOptions 方法作用域结束)

1.main 函数执行前

App 启动后,首先,系统内核(Kernel)创建一个进程。
其次,加载可执行文件。(可执行文件是指 Mach-O 格式的文件,也就是 App 中所有 .o 文件的集合体)这时,能获取到dylddyld 是苹果的动态链接器)的路径。
然后,加载 dyld,主要分为4步:
(1)load dylibs:这一阶段 dyld 会分析应用依赖的 dylib,找到其 mach-o 文件,打开和读取这些文件并验证其有效性,接着会找到代码签名注册到内核,最后对 dylib 的每一个 segment 调用 mmap()
(2)rebase/bind:进行 rebase 指针调整和 bind 符号绑定。
(3)ObjC setup:runtime 运行时初始化。包括 ObjC 相关 Class 的注册、category 注册、selector 唯一性检查等。
(4)Initializers:调用每个 ObjC 类与分类的 +load 方法,调用 attribute((constructor)) 修饰的函数、创建 C++ 静态全局变量。
2.main 函数执行后

main 函数执行后的阶段,指的是:从 main 函数执行开始,到 appDelegatedidFinishLaunchingWithOptions 方法里首屏渲染相关方法执行完成。
即,从 main 函数执行到设置 self.window.rootViewController 执行完成的阶段。

3.首屏渲染完成后

首屏渲染完成后的阶段,指的是:didFinishLaunchingWithOptions 方法作用域
内执行首屏渲染后的所有方法执行。
即从设置 self.window.rootViewControllerdidFinishLaunchWithOptions 方法作用域结束。

相关文章

  • 深入理解iOS App的启动过程

    前言 参考资料:深入理解iOS App的启动过程iOS 应用程序启动过程及原理总结iOS:App启动过程详解(不同...

  • iOS 关于启动app播放视频功能

    iOS 关于启动app播放视频功能 iOS 关于启动app播放视频功能

  • iOS 11.0后APP的图标和启动图

    iOS11.0后APP的图标和启动图iOS 11 AppIcon 和启动图尺寸关于iOS APP设置启动图片

  • iOS启动优化

    iOS App启动优化 iOS启动可分为冷启动和热启动两种冷启动:app为kill状态下点击app启动热启动:ap...

  • iOS App启动优化—— 了解App的启动流程

    iOS App启动优化—— 了解App的启动流程

  • iOS App启动过程

    使用dyld2启动应用的过程 1.加载dyld到App进程(dyld首先读取mach-o Header和load ...

  • ios app 启动过程

    程序入口点 当iOS app启动时,系统会根据app bundle中的 Info.plist 文件中的 Execu...

  • iOS App启动过程

    来源:吴白链接:http://www.jianshu.com/p/231b1cebf477 程序启动逻辑 使用Xc...

  • iOS App启动过程

    总结来说,大体分为如下步骤: (1) 系统为程序启动做好准备 当kernel(内核)做好程序的启动准备工作之后,系...

  • iOS APP启动过程

    首先了解一下程序执行的四个步骤 预处理, 展开头文件/宏替换/去掉注释/条件编译 编译, 检查语法,生成汇编 ...

网友评论

    本文标题:iOS App 启动过程

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