关于iOS的启动过程,之前也是一知半解,查了一些资料,总结如下。
首先,放一张流程图。摘自网络图片(侵权删)
1.main函数
2.UIApplicationMain
* 创建UIApplication对象
* 创建UIApplication的delegate对象
--------没有storyboard---------
3.delegate对象开始处理(监听)系统事件(没有storyboard)
* 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法
* 在application:didFinishLaunchingWithOptions:中代码创建UIWindow
* 创建和设置UIWindow的rootViewController
* 显示窗口
--------有storyboard---------
3.根据Info.plist获得最主要storyboard的文件名,加载最主要的storyboard(有storyboard)
* sb创建UIWindow
* 创建和设置UIWindow的rootViewController
* 显示窗口
这里可能有个误区:
不管设不设置Main Interface,代码都会走application:didFinishLaunchingWithOptions方法,只是设置uiwindow的方式有区别而已。
1、有设置,系统会直接取plist设置的界面控制器。
2、不设置,系统会在application:didFinishLaunchingWithOptions这里查找uiwindow。