intmain(intargc,char* argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
程序从main函数开始执行,返回一个UIApplicationMain; UIApplicationMain里边的第三个参数为nil;默认为UIAplication本身,官方文档有说明,参数类型为字符串; 第四个参数为UIApplication的代理名称
argc 是int 类型,代表程序启动时的参数个数,默认是1,
argv代表各个参数的值,默认指程序启动的名字
程序结束进程的时候,main函数才会返回;一个main函数开始执行到结束进程是一整个的生命周期
在runloop的作用下,进程不结束,main函数不会返回;
宏观上的一个流程是:
1. 打开程序
2. 执行main函数
3. 执行UIApplicationMain函数
4. 初始化UIApplication(创建和设置代理对象,开启事件循环)(监听系统事件)
交给AppDelegate执行
a. 程序加载完毕:didFinishLaunchingWithOptions
b.程序获得焦点:applicationDidBecomeActive
c. 程序进入后台:applicationDidEnterBackground
d.程序失去焦点:applicationWillResignActive
e.程序从后台回到前台:applicationWillEnterForeground
f. 内存警告:applicationDidReceiveMemoryWarning
g. 程序即将退出:applicationWillTerminate