美文网首页iOS学习笔记OSiOS 易混淆的点
iOS程序启动过程(生命周期)

iOS程序启动过程(生命周期)

作者: YotrolZ | 来源:发表于2015-08-25 10:11 被阅读315次

    程序启动的过程总结

    1.main函数

    2.UIApplicationMain

    int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
    
    • 此函数会根据principalClassName创建UIApplication对象
    • 此函数会根据delegateClassName创建一个delegate对象
    • 并将该delegate对象赋值给UIApplication对象中的delegate属性
    UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]))
    
    • principalClassNamenil,默认是UIApplication,创建一个 UIApplication对象
    • delegateClassName不能传nil,这里传nil,意味着application没有代理,就无法监听系统的事件,系统的事件都没法监听,窗口都不知道什么时候去加载,因为视图都是懒加载的,因此就不会创建窗口,什么东西都没有。
    • argc,argv : ISO C标准main函数的参数,直接传递给UIApplicationMain进行相关处理即可

    3.delegate对象开始监听(处理)系统事件(没有storyboard),手动执行

    • 程序启动完毕的时候,就会调用代理的application:didFinishLaunchingWithOptions:方法
    • application:didFinishLaunchingWithOptions:中创建UIWindow
    • 创建和设置UIWindow的rootViewController
    • 显示窗口

    4.delegate对象开始监听(处理)系统事件(有storyboard),系统自动执行

    • 根据info.plist文件获得最主要的storyboard的文件名,加载最主要的storyboard
    • 创建UIWindow
    • 创建和设置UIWindow的rootViewController
    • 显示窗口
    mian.storyboard的加载过程.png
    • 内部实现原理(由系统自动完成):
    main.storyboard内部实现原理.png

    相关文章

      网友评论

        本文标题:iOS程序启动过程(生命周期)

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