1.App启动过程
- 解析
info.plist
- 加载相关信息,例如闪屏
- 沙盒建立,权限检查
-
Mach-O
(什么是Mach-O)加载 - 如果是二进制文件,寻找合适当前CPU离别的部分
- 加载所有依赖的Mach-O文件(递归调用Mach-O加载方法)
- 定位内部,外部指正引用,例如字符串,函数等
- 执行声明为
attribute
(constructor)的C函数 - 加载类的扩展中的方法
- C++静态对象加载,调用Objec的
+ load
函数
2.程序执行
-
main
函数 - 执行
UIApplicationMain
函数 - 创建
UIApplication
对象 - 创建
UIApplictionDelegate
对象并复制 - 读取配置文件
Info.plist
,设置程序启动的一些属性 - 创建应用程序的
Main Runloop
循环 -
UIApplicationDelegate
对象开始处理监听事件 - 程序启动之后,首先调用
application.didFinishLaunchingWithOptions
方法 - 如果
Info.plist
中配置了启动的storyBoard
的文件名,则加载storyBoard文件 - 如果没有配置,则根据代码创建
UIWindow
- >rootViewController
->显示