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: 以上均根据自己理解所写,如存在错误,欢迎大家指正。

【原创】storyboard启动应用程序的大致流程的更多相关文章

  1. [原创] Laravel 启动流程

    目录 1. 程序启动准备 1.1 容器基础配置 1.2 核心类绑定 1.3 实例化 Http 核心类 2. 请求实例化 3. 请求处理 3.1 请求处理环境初始化 1. 环境监测 \Illuminat ...

  2. Android开发第一讲之目录结构和程序的执行流程

    1.如何在eclipse当中,修改字体 下面的这种办法,可以更改xml的字体 窗口--首选项--常规--外观--颜色和字体--基本--文本字体--编辑Window --> Preferences ...

  3. Win10 VC++6 无法启动此程序,因为计算机中丢失mfc42d.dll 需要提升

    亲测可用 1.无法启动此程序,因为计算机中丢失mfc42d.dll 我也遇到了这个问题,并且顺利解决了!按一下流程搞定的: “工程-设置-常规-microsoft基础类,(选择使用MFC作为静态链接库 ...

  4. Ios 程序封装,安装流程

    转:http://www.myexception.cn/operating-system/1436560.html Ios 程序打包,安装流程 一.发布测试,是指将你的程序给   * 你的测试人员,因 ...

  5. Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序

    Android For JNI(一)--JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序 当你的Android之旅一步步的深入的时候,你其实会发现,很多东西都必须去和framew ...

  6. Unity3D|-XLua热更新用法的大致流程

    xlua是由腾讯维护的一个开源项目,我们可以在github上下载这个开源项目并查看一些相关文档 官网:https://github.com/Tencent/xLua 配置文档:https://gith ...

  7. Spring Boot程序的执行流程

    Spring Boot的执行流程如下图所示:(图片来源于网络) 上图为SpringBoot启动结构图,我们发现启动流程主要分为三个部分,第一部分进行SpringApplication的初始化模块,配置 ...

  8. Net Core 使用外部登陆提供程序登陆的流程,以及身份认证的流程

    在Asp.Net Core 中使用外部登陆(google.微博...)   原文出自Rui Figueiredo的博文<External Login Providers in ASP.NET C ...

  9. Wireshark启动出现“无法启动此程序,因为计算机丢失api-ms-win-crt-runtime-l1-1-0.dll。”

    由于重装了win7系统,安装wireshark启动出现了“无法启动此程序,因为计算机丢api-ms-win-crt-runtime-l1-1-0.dll”的问题. 网上查了一圈的资料终解决问题,于是整 ...

随机推荐

  1. Self Service Password (SSP)

    安装SSP, 依赖包包括php5, php5-ldap, php5-mcrypt 启用mcrypt功能: sudo php5enmod mcrypt 第一部分: Apache 安装Apache, 并且 ...

  2. Powershell变量的类型

    Powershell 默认支持的.NET类型如下:   [order], [pscustomobject], [array], [bool], [byte], [char], [datetime], ...

  3. javascript双击事件取消默认的两次单击事件

    当一个元素同时具有单击和双击事件时,双击时会触发2次单击和1此双击事件. 双击会:先第1次单击 ,同时触发第2次和双击事件. 造成的不好影响:每次单击事件会延迟执行. <!DOCTYPE htm ...

  4. netbeans使用技巧总结+快捷键大全

      部分经常用的快捷键: 使用快捷键Alt+Enter显示修复错误的方法. 4.导航 a)Alt+Shift+O :转到类. b)Ctrl+Tab :在打开的源文件中进行切换. c)Alt+Right ...

  5. JS页面跳转 神器! window.href window.open

    window.open 打开页面, 网址为新的网址 window.href 为打开本网址的链接, 为网站URL+传入的URL

  6. debug和release转载

    Debug和Release区别 转自草原和大树 VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下 ...

  7. attr-img-src

    https://dev.w3.org/html5/spec-preview/the-img-element.html#attr-img-src The src attribute must be pr ...

  8. Flink - Juggling with Bits and Bytes

    http://www.36dsj.com/archives/33650 http://flink.apache.org/news/2015/05/11/Juggling-with-Bits-and-B ...

  9. oracle管理控制台不能打开,提示此网站的安全证书有问题?

    在命令行里直接键入:certutil -setreg chain\minRSAPubKeyBitLength 128 然后再用IE打开.

  10. LINQ延迟查询的例子

    //linq延迟查询.两次查询结果不同 List<string> l = new List<string>() { "aaa", "bbb&quo ...