iOS程序启动原理
参考文章:
iOS アプリの構造がどのようになっているか紐解いてみる
Revisiting the App Launch Sequence on iOS
启动过程
1.执行 main 函数,调用 main 函数里的 UIApplicationMain 函数。
2.UIApplicationMain 函数:
2.1 创建 UIApplication 对象;
2.2 创建UIApplication对象的代理AppDelegate;(遵循UIApplicationDelegate协议)
2.3 加载 Info.plist 文件;
3.UIApplication 对象开启事件循环。
4.UIApplication 读取 Stroyboard(已经加载的Info.plist文件里的Main storyboard file base name项对应的Stroyboard)。
如果没有Stroyboard,则直接跳至7。然后在对应方法中写下面的过程。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 创建窗口
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
// 成为主窗口并可见
[self.window makeKeyAndVisible];
// 设置根视图控制器
return YES;
}
5.生成 ViewController(上一步Stroyboard里,白色箭头所指的控制器对象)。
6.AppDelegate 生成 UIWindow(并且设置根视图控制器为上一步的ViewController)。
7.调用 application:didFinishLaunchingWithOptions: 方法.