• UIApplicationMain函数做了什么


    在iOS应用中,每个程序得main函数中都调用了UIApplicationMain函数。

    1
    2
    3
    4
    5
    6
    int main(int argc, char *argv[])
    {
        @autoreleasepool {
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }

    先来看看UIApplicationMain函数的原型:

    1
    2
    3
    4
    5
    6
    int UIApplicationMain (
        int argc,
        char *argv[],
        NSString *principalClassName,
        NSString *delegateClassName
    );

    前面的argc和argv是ISO C标准的main函数的参数,直接传递给UIApplicationMain进行相关处理。principalClassName是应用程序类的名字,该类必须继承自UIApplication类。而delegateClassName是应用程序类的代理类。如果主要nib文件(在info.plist文件中指定,key是NSMainNibFile)存在,就会在nib文件对象里寻找Application对象和连接它的delegate。此函数会根据principalClassName创建UIApplication对象,然后根据delegateClassName创建一个delegate对象,并将UIApplication对象中的delegate属性设置为delegate对象。接着会建立应用的main runloop,进行事件的处理(首先会调用– application:didFinishLaunchingWithOptions:)。程序正常退出时才返回(如今iOS支持后台运行,系统在必要时会强行杀死不用的进程,一般这个函数不等返回进程就终止了)。

  • 相关阅读:
    无锁队列的实现
    C/C++语言中闭包的探究及比较
    Linus:利用二级指针删除单向链表
    Unix考古记:一个“遗失”的shell
    “C++的数组不支持多态”?
    Alan Cox:单向链表中prev指针的妙用
    二叉树迭代器算法
    C语言全局变量那些事儿
    数据即代码:元驱动编程
    C++模板”>>”编译问题与词法消歧设计
  • 原文地址:https://www.cnblogs.com/lsck/p/2501345.html
Copyright © 2020-2023  润新知