Mr·liiOS基础

app完整的启动过程 main方法的作用

2016-01-07  本文已影响382人  ___1o_8o

程序启动的完整过程:

1、先执行main函数,main内部会调用UIApplicationMain函数,该函数的声明如下:

intUIApplicationMain(intargc,charargv[], NSString principalClassName, NSString *delegateClassName)。

argc、argv:标准main函数的参数,直接传递给UIApplicationMain进行相关处理即可

principalClassName:指定应用程序类,该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值

delegateClassName:指定应用程序类的代理类,该类必须遵守UIApplicationDelegate协议。

2、在UIApplicationMain函数里面做了如下几件事情:

(1)、根据传入的第三个参数创建UIApplication对象或它的子类对象。如果该参数为nil,直接使用该UIApplication来创建。(该参数只能传人UIApplication或者是它的子类)

(2)、根据传入的第四个参数创建AppDelegate对象,并将该对象赋值给第1步创建的UIApplication对象的delegate属性。

(3)、开启一个事件循环,循环监控应用程序发生的事件。每监听到对应的系统事件时,就会通知AppDelegate。

3、分两种情况:

(1)有stroyboard

>应用程创建一个UIWindow对象(继承自UIView),并设置为AppDelegate的window属性。

>加载Info.plist文件,读取最主要storyboard文件的名称。

>加载最主要的storyboard文件,创建白色箭头所指的控制器对象。并且设置控制器为UIWindow的rootViewController属性(根控制器)。

>展示UIWindow,展示之前会将添加rootViewController的view到UIWindow上面(在这一步才会创建控制器的view),其内部会执行该行代码:[window addSubview: window.rootViewControler.view];

(2)没有stroyboard

>首先会调用delegate对象的application:didFinishLaunchingWithOptions:方法。

>在application:didFinishLaunchingWithOptions:方法中需要主动创建UIWindow对象。并设置为AppDelegate的window属性。

>主动创建一个UIViewController对象,并赋值给window的rootViewController属性。

>调用window的makeKeyAndVisible方法显示窗口。

Main方法的作用:

1.根据第三个参数创建UIApplication对象,该对象为空就是默认创建UIApplication对象,该参数只能是UIApplication或者UIApplication的子类

该参数的写法可以有: nil,@“UIApplication”,NSStringFromClass([UIApplication class])

2.根据第四个参数创建应用程序代理,并将代理对象设置给application对象的delegate属性

3.开启时间循环,包括应用程序的循环运行,并开始处理用户事件

4.根据info.plist加载最主要的storyboard文件(默认是Main.storyboard,创建箭头指向的控制器(默认是viewController)

上一篇下一篇

猜你喜欢

热点阅读