程序启动原理

作者: 朗语花香 | 来源:发表于2016-04-30 23:22 被阅读269次

程序启动的完整过程:

1、先执行main函数,main内部会调用UIApplicationMain函数,该函数的声明如下: int UIApplicationMain(int argc, char argv[], 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方法显示窗口。

原著出自乔丹JD--《IOS开发》专题,如需转载请注明出处。乔丹postTime-2016-3-12

相关文章

  • 程序的启动原理

    ========================程序的启动原理==================== 一、 项目...

  • iOS程序执行顺序和UIViewController 的生命周期

    一. iOS程序的启动执行顺序 ** 程序启动顺序图 ** iOS启动原理图.png ** 具体执行流程 ** 程...

  • 程序启动原理

    程序启动原理 一.首先找到程序入口,执行main函数 main -> UIApplicationMain intm...

  • 程序启动原理

    这个图片就可以将我们的程序启动的过程 程序启动的原理就是: 上面图片左边的那一部分 .

  • 程序启动原理

    程序启动的完整过程: 1、先执行main函数,main内部会调用UIApplicationMain函数,该函数的声...

  • 程序启动原理

    系统入口的代码和参数说明: argc:系统或者用户传入的参数argv:系统或用户传入的实际参数1.根据传入的第三个...

  • 程序启动原理

    一.首先找到程序入口,执行main函数main -> UIApplicationMain二.UIApplicati...

  • 程序启动原理

    打开程序 -> 执行main函数 -> 执行UIApplicationMain函数 -> 初始化UIApplica...

  • 程序启动原理

    1.创建UIApplication(UIApplication可以做:1.打开网页,发短信,打电话 2.设置应用程...

  • App启动原理

    一、程序启动原理 二、程序启动完整过程: 三、ViewController的生命周期 https://www.ji...

网友评论

本文标题:程序启动原理

本文链接:https://www.haomeiwen.com/subject/vzvkrttx.html