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. 矢量图标转成16*16大小的SVG格式

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:一一链接:http://www.zhihu.com/question/32233782/answer/68629385来源:知 ...

  2. 下载站中的下载连接其实是php脚本文件控制

    什么是php文件,PHP是一种服务器端HTML-嵌入式脚本描述语言. 其最强大和最重要的特征是其数据库集成层,使用它完成一个含有数据库功能的网页是不可置信的简单.在HTML文件中, PHP脚本程序(语 ...

  3. Trie

    字典树 class Trie { public: Trie() { root = new Node(); } ~Trie() { destroy(root); } void insert(string ...

  4. 校内OJ 1128 词链(link)(Trie+DFS)

    1128: 词链(link) 时间限制: 1 Sec  内存限制: 64 MB 提交: 23  解决: 7 [提交][状态][讨论版] 题目描述 给定一个仅包含小写字母的英文单词表,其中每个单词最多包 ...

  5. CSS权威指南 - 浮动和定位 2

    定位 定位的想法很简单元素框相对于正常位置出现在哪里. 定位:static,相对, 绝对, fixed, 继承 static就是默认的位置 相对就是相对于默认位置的偏移.原来的static定位位置依然 ...

  6. apache日志文件太大的问题

    apache日志文件太大的问题 处理Apache日志的两种方法 rotatelogs 是 Apache 2.2 中自带的管道日志程序 rotatelogs [ -l ] logfile [ rotat ...

  7. snprintf/strncpy/strlcpy速度测试

    速度测试代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <un ...

  8. wordpress 添加自定义菜单到管理面板(wp-admin)

    如果你在做 wordpress 主题或插件的开发,通常需要在后台dashboard管理面板添加菜单方便用户做主题设置或插件设置.这篇文章要讨论的问题就是怎么样加这个菜单,加在哪里? 添加顶级菜单项 a ...

  9. Bootstrap页面布局24 - BS旋转木马功能

    代码: <div class='container-fluid'> <h3 class='page-header'>Bootstrap 旋转木马</h3> < ...

  10. mysql默认字符集修改

    (1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,添加 [mysql] default-character-set = utf8 [mysqld] character_se ...