一 打开APP
程序的入口(进入main函数)
设置AppDelegate称为函数的代理
程序完成加载
-[AppDelegate application:didFinishLaunchingWithOptions:]
创建window窗口
程序被激活
-[AppDelegate applicationDidBecomeActive:]
二 其他状态
取消激活状态(按下Home键两次)
-[AppDelegate applicationWillResignActive:]
已经进入后台(再次按下Home键)
-[AppDelegate applicationDidEnterBackground:]
即将进入前台
-[AppDelegate applicationWillEnterForeground:]
进入后台时 applicationWillResignActive - applicationDidEnterBackground
进入前台时 applicationWillEnterForeground - applicationDidBecomeActive
注:
比如当有电话进来或锁屏时,这时应用程序会挂起进入非活动状态(applicationWillResignActive),也就是你的手机其实界面还是显示着你当前的App窗口,只不过被别的任务强制占用了,或者Home键进入后台(要先进入非活动状态, 然后进入后台状态)。
入口函数
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
1.argc和argv参数是为了与C语言保持一致,在这没用到,不详述。
2.后面两个参数为 主要类名 和 委托类名。
(1) 如果主要类名是nil,那么它的值将从Info.plist中获取,如果Info.plist中没有,则默认为UIApplication。主要类名代表的类除了管理整个程序的生命周期之外什么都不做,它只负责监听事件然后交给委托类去做。
(2) 委托类将在工程新建时实例化一个对象。
NSStringFromClass([AppDelegate class]) 即 @"AppDelegate"
iOS启动原理图
网友评论