![](http://imgsrc.baidu.com/forum/w%3D580/sign=846b28b906e9390156028d364bed54f9/9200d60a304e251f6d787461a086c9177e3e5355.jpg)
iOS应用程序一般都是由自己编写的代码和系统框架(system frameworks)组成,系统框架提供一些基本infrastructure给所有app来运行,而自己编写的代码主要是根据需求来定制app的外观和行为的。
iOS的程序入口在main.m文件:
#import
#import "AppDelegate.h"
intmain(intargc, char* argv[])
{
@autoreleasepool {
returnUIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
我们可以看到在上面的代码中有一个很重要的函数—— UIApplicationMain,它的作用主要是创建app的几个核心对象来处理以下过程:
(1)从可用Storyboard文件加载用户界面
(2)调用AppDelegate自定义代码来做一些初始化设置
(3)将app放入Main Run Loop环境中来响应和处理与用户交互产生的事件
UIApplicationMain函数,重点是后两个参数,分别表示程序的主要类(principal class)和代理类(delegate class)。如果主要类(principal class)为nil,将从Info.plist中获取,如果Info.plist中不存在对应的key,则默认为UIApplication;而代理类(delegate class)将在新建工程时创建。