UIApplicationMain函数做了什么?

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

 
int main(int argc, char *argv[])

{

    @autoreleasepool {

       return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

    }

}

先来看看UIApplicationMain函数的原型:

 
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支持后台运行,系统在必要时会强行杀死不用的进程,一般这个函数不等返回进程就终止了)。

UIApplicationMain函数做了什么?,布布扣,bubuko.com

时间: 2024-10-12 19:59:45

UIApplicationMain函数做了什么?的相关文章

UI程序执行顺序(UIApplicationMain()函数),自定义视图

UI程序的一般执行顺序: 先进入main里面,执行函数UIApplicationMain(),通过该函数创建应用程序对象和指定其代理并实现监听,当执行函数UIApplicationMain()时还会做一次跳转,跳转至AppDelegate UIApplicationMain() 函数的三大功能: 1.创建应用的UIApplication对象 2.指定应用程序的代理对象,代理的主要作用:监听应用程序是如何运行的. 3.建立事件循环(runloop:这个循环是一个死循环).作用:一旦用户操作应用程序

通过函数实现打印*号组成的直角三角形,函数要求传入行数即可。在main 方法中,通过用户输入得到行数,然后调用函数做打印。

#include <stdio.h> /* 1.通过函数实现打印*号组成的直角三角形,函数要求传入行数即可.在main方法中,通过用户输入得到行数,然后调用函数做打印.三角形样式:********************* */ int sanjiao(int hang){ int i; int j; for(i = 0; i < hang;i++) { for(j = 0;j <i+1;j++) { printf("*"); } printf("\n

JavaScript中使用函数做replace的第二个参数

通过第一个例子来全面看下作replace第二个参数的函数的参数....听起来是有点绕→_→ 例: //第一参数为正则表达式 1 var url = "http://www.softwhy.com/forum.php?mod=viewthread&tid=14743&extra=page%3D1"; 2 console.group("正则表达式"); 3 var regexp_global = /[?&](\w+)=([^&]*)/g;

RCurl getURL()函数做debug

getURL()函数做获取网页做debug,三步骤 1.首先创建一个对象debugGatherer(),该对象包含三个函数:(update(), value(), reset()); R> debugInfo <- debugGatherer() R> names(debugInfo) [1] "update" "value" "reset" R> class(debugInfo[[1]]) [1] "funct

用CIL写程序:写个函数做加法

前言: 上一篇文章小匹夫为CIL正名的篇幅比较多,反而忽略了写那篇文章初衷--即通过写CIL代码来熟悉它,了解它.那么既然有上一篇文章做基础(炮灰),想必各位对CIL的存在也就释然了,兴许也燃起了一点探索它,掌握它的欲望.那么小匹夫就继续扯一扯CIL,接下来的几篇文章也都以上一篇文章中的那个CIL实现的Hello Wolrd程序为基础,继续通过写CIL代码实现一些功能的方式来和各位探讨交流,同时也加深自己对CIL的掌握和印象. 人生就是做加法 "我的肩上搭着她得衣裳,我嗅着她留在衣服上的体香..

python中对函数做一些封装

把之前userlogin函数放到一个新的user.py中 在源文件中需要再做两步 1 import user 2 调用函数时userLogin 加上user. 变成user.userLogin

我们能用云函数做什么?

前言 本文以Firebase为例,因为腾讯云的云函数正在内测,还没申请到.:) 现如今云计算时代渐渐出现了越来越多的新型模式,从 IaaS: Infrastructure-as-a-Service(基础设施即服务) PaaS: Platform-as-a-Service(平台即服务) SaaS: Software-as-a-Service(软件即服务) 到CaaS:Containers as a Service(容器云) 再到的微服务架构,都在试着将各种软.硬件资源或抽象的事物做为一种服务提供给

2014.10.9 模板函数做友元函数的问题

1.模板函数作为类的友元函数,要先声名. 2.在类的定义中声明友元时要在函数后加上<T> 1 #ifndef Array1D_ 2 #define Array1D_ 3 4 // One-dimensional arrays. 5 6 #include <iostream> 7 #include "xcept.h" 8 9 10 template <class T> class Array1D; 11 //template <class T&g

spectrogram函数做短时傅里叶分析

整理自:http://blog.sina.com.cn/s/blog_6163bdeb0102dwfw.html 今天偶人发现原来matlab自带了短时傅里叶变换的分析函数,老版本的matlab是specgram函数,新的改成了spectrogram函数,虽然一说到时频分析,都会说到小波分析,小波分析要比短时傅里叶要好云云,但在分析信号的瞬时频谱时,短时傅里叶还是有它的用武之地的.前一阵也看了一些有关小波分析的matlab实现,发现帮助中使用小波也多是除噪.压缩,都说小波是时频显微镜,它的用武之