zoukankan      html  css  js  c++  java
  • iOS程序启动过程

      原文在此

      main函数之前的底层环境搭建(代码拷贝、内存的开辟等操作系统相关的开启一个进程)不再描述,我们从main函数开始。

    1 main函数

    int main(int argc, char * argv[]) {
        NSLog(@"===%s",argv[0]);
        @autoreleasepool {
            /// 函数原型:
            //  int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }

      这里面的代码一般是不变的。首先是一个自动释放池,保证结束时内存释放,下面是参数介绍:

      argc, argv:是标C的参数,argc为argv数组中元素的个数。argv一般有一个元素argv[0]即当前可执行程序的路径。(另外,在linux系统下我们通过终端打开一个程序可以给它传递参数,具体不再展开。如果不知所云括号里面的自动忽略);

      principalClassName指定应用程序类,该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值,它是一个单例,代表一个进程,也是程序创建的第一个对象,利用UIApplication对象,能进行一些应用级别的操作;

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

    2 UIApplicationMain

       1)根据传进的参数创建UIApplication对象;

       2)根据传进的参数创建UIApplication的delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性。

       3)开启一个消息循环

      下面分为storyboard启动和没有storyboard启动

    ##有storyboard##

    3 根据Info.plist加载storyboard

       1)创建UIWindow,UIWindow是一种特殊的UIView,通常在一个App中只会有一个UIWindow(注意是通常,还有其它的,比如弹出的键盘)。设置为主窗口,同一时刻主窗口只有一个,可以通过[UIApplication sharedApplication].keyWindow获取。

       2)创建和设置UIWindow的rootViewController。

       3)显示窗口

     


     

    ##没有storyboard##

    3 delegate对象开始处理(监听)系统事件(没有storyboard)

       1)程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法

           2)在application:didFinishLaunchingWithOptions:中创建UIWindow:window

           3)创建和设置UIWindow的rootViewController

           4)显示并设置window为主窗口:[window makeKeyAndVisible]; 然后self.window = window;防止被释放。

     

     

  • 相关阅读:
    Git 基础
    SharePoint 2013 对象模型操作"网站设置"菜单
    SharePoint 2013 隐藏部分Ribbon菜单
    SharePoint 2013 Designer系列之数据视图筛选
    SharePoint 2013 Designer系列之数据视图
    SharePoint 2013 Designer系列之自定义列表表单
    SharePoint 2013 设置自定义布局页
    SharePoint 2013 "通知我"功能简介
    SharePoint 2013 创建web应用程序报错"This page can’t be displayed"
    SharePoint 禁用本地回环的两个方法
  • 原文地址:https://www.cnblogs.com/mddblog/p/4761245.html
Copyright © 2011-2022 走看看