iOS程序启动原理

关于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。

 

posted @ 2017-01-10 11:45  那一抹风情  阅读(283)  评论(0编辑  收藏  举报