【原创】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: 以上均根据自己理解所写,如存在错误,欢迎大家指正。
【原创】storyboard启动应用程序的大致流程的更多相关文章
- [原创] Laravel 启动流程
目录 1. 程序启动准备 1.1 容器基础配置 1.2 核心类绑定 1.3 实例化 Http 核心类 2. 请求实例化 3. 请求处理 3.1 请求处理环境初始化 1. 环境监测 \Illuminat ...
- Android开发第一讲之目录结构和程序的执行流程
1.如何在eclipse当中,修改字体 下面的这种办法,可以更改xml的字体 窗口--首选项--常规--外观--颜色和字体--基本--文本字体--编辑Window --> Preferences ...
- Win10 VC++6 无法启动此程序,因为计算机中丢失mfc42d.dll 需要提升
亲测可用 1.无法启动此程序,因为计算机中丢失mfc42d.dll 我也遇到了这个问题,并且顺利解决了!按一下流程搞定的: “工程-设置-常规-microsoft基础类,(选择使用MFC作为静态链接库 ...
- Ios 程序封装,安装流程
转:http://www.myexception.cn/operating-system/1436560.html Ios 程序打包,安装流程 一.发布测试,是指将你的程序给 * 你的测试人员,因 ...
- Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序
Android For JNI(一)--JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序 当你的Android之旅一步步的深入的时候,你其实会发现,很多东西都必须去和framew ...
- Unity3D|-XLua热更新用法的大致流程
xlua是由腾讯维护的一个开源项目,我们可以在github上下载这个开源项目并查看一些相关文档 官网:https://github.com/Tencent/xLua 配置文档:https://gith ...
- Spring Boot程序的执行流程
Spring Boot的执行流程如下图所示:(图片来源于网络) 上图为SpringBoot启动结构图,我们发现启动流程主要分为三个部分,第一部分进行SpringApplication的初始化模块,配置 ...
- Net Core 使用外部登陆提供程序登陆的流程,以及身份认证的流程
在Asp.Net Core 中使用外部登陆(google.微博...) 原文出自Rui Figueiredo的博文<External Login Providers in ASP.NET C ...
- Wireshark启动出现“无法启动此程序,因为计算机丢失api-ms-win-crt-runtime-l1-1-0.dll。”
由于重装了win7系统,安装wireshark启动出现了“无法启动此程序,因为计算机丢api-ms-win-crt-runtime-l1-1-0.dll”的问题. 网上查了一圈的资料终解决问题,于是整 ...
随机推荐
- echo "不允许上传该类型的文件
<?php教程 // 上传设置 $maxsize=10002400; //最大允许上传的文件大小 $alltype=array(".php"," ...
- switch,break和default语句练习
int w = 8; switch (w){ case 0: System.out.println("今天是星期日"); break; case 1: System.out.pri ...
- debug阶段工作期站立会议2(进度推进)
组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git.coding.n ...
- [ZZ] Shadow Map
Shadow Map 如何能够高效的产生更接近真实的阴影一直是视频游戏的一个很有挑战的工作,本文介绍目前所为人熟知的两种阴影技术之一的ShadowMap(阴影图)技术. ShadowMap技术 ...
- HTTP 笔记与总结(1 )Telnet 分别发送 HTTP GET 和 HTTP POST 请求
简化的说: WebService = HTTP 协议 + XML Rest = HTTP 协议 + Json 各种 API = HTTP 协议 + XML / Json 来实现 HTTP 请求信息格式 ...
- Unity 中场景切换
Unity游戏开发中,单个Scene解决所有问题似乎不可能,那么多个Scene之间的切换是必然存在.如果仅仅是切换,似乎什么都好说,但是在场景比较大的时候不想让玩家等待加载或者说场景与场景之间想通过一 ...
- WEB系统开发
最近根据项目组需求做了web工作流程系统,就是一个简单的web管理系统,取代原先使用的excel表格,在VS2008下面开发,数据库使用Mysql,使用Mysql-connecte 5.0与数据库连接 ...
- HTML: 用表格畫出課程表
這個知識點,常常被我忽略,而且誤解(其實不是我誤解),曾經一個公司的要求:不使用table,一律用div,即使是整齊的,能夠使用table輕鬆佈局出的樣式,也一定要用div. 可能這傢伙沒搞清楚,ta ...
- Linux shell 变量 数学 运算
Abstract : 1) Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 ...
- mysql之触发器trigger 详解
为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 mysql之触发器trigger 触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table) ...