美文网首页
iOS程序的启动执行顺序

iOS程序的启动执行顺序

作者: __life__ | 来源:发表于2017-12-19 16:12 被阅读0次

    一 打开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.argcargv参数是为了与C语言保持一致,在这没用到,不详述。

    2.后面两个参数为 主要类名 和 委托类名

    (1) 如果主要类名是nil,那么它的值将从Info.plist中获取,如果Info.plist中没有,则默认为UIApplication。主要类名代表的类除了管理整个程序的生命周期之外什么都不做,它只负责监听事件然后交给委托类去做。

    (2) 委托类将在工程新建时实例化一个对象。

    NSStringFromClass([AppDelegate class]) 即 @"AppDelegate"

    iOS启动原理图

    相关文章

      网友评论

          本文标题:iOS程序的启动执行顺序

          本文链接:https://www.haomeiwen.com/subject/xzfiwxtx.html