zoukankan      html  css  js  c++  java
  • 【原创】storyboard启动应用程序的大致流程

     storyboard启动应用程序的大致流程

     [原创] 转载请注明出处:http://i.cnblogs.com/EditPosts.aspx?postid=5395023 

    1.

    用户点击APP图标——程序NSBundle(/private/var/mobile/Containers/Bundle/Application/08F4D328-D83F-43FA-8D18-CEF7DB69FCE7/test.app)中编译好的二进制可执行文件以及NSBundle中相关资源文件,会迅速加载进入手机内存——接着将启动页LaunchScreen.storyboard中内容截图(如果设置启动图则直接显示启动图片)显示到手机屏幕上(让启动页拖住用户,为程序真正的执行争取时间),空的项目通常会看到一张空白的大View。以上工作均在执行main.m的int main()函数之前便完成,可以通过给int main()函数打断点验证。在执行该断点前,程序启动图已显示出来。

     2.

    ——显示启动页后,iOS系统开始执行test.app中可执行二进制文件,该文件入口为main.m中的int main()函数,首先执行int main()函数中的UIApplicationMain()函数。 UIApplicationMain()函数永远不会返回,它主要会做以下几件事情:

    a. 创建UIApplication对象和AppDelegate对象,并将application.delegate = appDelegate;

    b. 开启主线程的运行循环MainRunLoop,开始处理事件;

    c. 读取info.plist文件,若发现设置storyboard启动,便加载对应的sb。

    3.

    ——storyboard被加载后,首先会实例化箭头指向的控制器,并设置给self.window.rootViewController属性 —— 调用didFinishLaunchingWithOptions方法,此时application对象,appdelegate对象,_window,rootViewController对象都已创建好,且rootVC.view已被创建并add到_window上了(可以自己打断点po验证) —— 执行完didFinishLaunchingWithOptions代码,便会来到rootVC的viewDidLoad/viewWillAppear看是否有定义self.view的行为——最后将_window上的内容显示给用户看。

    4.

    loadView在App启动时到底都干了些什么?

    详见:http://www.cnblogs.com/stevenwuzheng/p/5394978.html

    5.

    PS: 以上均根据自己理解所写,如存在错误,欢迎大家指正。

    iOS开发者交流群:180080550
  • 相关阅读:
    .net对象生命周期 一) 转载
    HTTP的版本 转载
    sql server sql语句判断是否有表备注并进行新增或修改
    sql server update触发器
    vs文件属性复制到输出目录 转载
    c#使用log4net记录日志 转载
    windows服务定时器 转载
    vs创建项目以后修改https为http
    消息队列 转载
    nmp 设置淘宝镜像
  • 原文地址:https://www.cnblogs.com/stevenwuzheng/p/5395023.html
Copyright © 2011-2022 走看看