应用程序启动原理
程序的入口:main函数
-
1.执行main
- UIApplicationMain(argc,argv,nil,NSStringFromClass([AppDelegate class]))
- 第三个参数:应用程序对象的名称,如果指定为nil,就代表是@“UIApplication”
- nil默认代表写了一个UIApplication字符串
- 第四个参数:Delegate的classname
- 默认代表@@"AppDelegate"
- 第三个参数:应用程序对象的名称,如果指定为nil,就代表是@“UIApplication”
- UIApplicationMain(argc,argv,nil,NSStringFromClass([AppDelegate class]))
-
2.执行UIApplication对象
- UIApplicationMain内部会创建UIApplication对象,并设置它的代理
- 创建一个事件循环,主运行循环(死循环:保证应用程序一直能够运行),保证应用程序不退出
- 加载配置文件,读取配置信息
- 读取info.plist文件时,会做很多判断,其中包括一项Main storyboard file base name 有没有指定main
- 如果指定,就会加载main.storyboard显示出来,如果没有指定main,就什么都不去做
- 读取完毕后,会通知应用的代理,应用程序启动完毕,就会调用application的didFinishLaunchWithOptions:
-
在加载info.plist后,判断下是否指定main,如果指定了,就会去加载StoryBoard.
- 1.创建一个窗口
- 2.加载MainStoryBoard,初始化一个控制器.
- 3.把初始化出来的控制器设置为窗口的根控制器.让窗口显示到屏幕上.
如果没有指定Mian话, 那这个时候就需要我们手动的去创建窗口.
当info.plist文件没有找到的时候,那么程序就加载完毕,那么在程序加载完毕时要自己手动去创建窗口.