iOS学习心得移动开发-iOSiOS 开发

iOS应用程序启动原理

2016-09-27  本文已影响60人  GSChan

1、程序一启动就会调用main.m函数

2、调用UIApplicationMain(int argc, char *argv[], NSString * __nullable principalClassName, NSString * __nullable delegateClassName)

  2.1. argc:执行main函数需要传入参数数组的个数

  2.2. argv:执行main函数需要传入的参数数组

  2.3. principalClassName:根据传入参数创建UIApplication对象,并设置UIApplicationMain对象的代理,需要传入 UIApplication及其子类的名字;若传入nil,默认传入UIApplication的类名

  2.4.delegateClassName:根据传入参数创建对象,并设置为UIApplication代理对象, principalClassName传入UIApplication子类的类名,那么delegateClassName也必须传子类的类名

注:苹果官方文档对于UIApplicationMain(int argc, char *argv[], NSString * __nullable principalClassName, NSString * __nullable delegateClassName)描述

3.建立一个主的事件循环,包括应用程序的run loop

4.加载info.plist文件

4.1.如果info.plist文件中有Main Storyboard file base name,那么就去加载Main.storyboard,根据Main.storyboard的指向创建对应的控制器,在创建控制器之前,先去创建UIWindow并设置为主窗口(keywindow),将控制器设置为窗口的跟控制器(rootViewController),并将控制器的view添加到window上(self.window addSubview view),(view之所以能够显示就是因为有窗口-即UIWindow)调用AppDelegate代理方法

4.2.如果没有Main Storyboard file base name,那么就会调用AppDelegate代理方法

注:苹果给出图如下:

上一篇 下一篇

猜你喜欢

热点阅读