【原创】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”的问题. 网上查了一圈的资料终解决问题,于是整 ...
随机推荐
- 微博开发平台java SDK demo学习之friendships
本文解释了在java SDK的demo中与feiendships有关的功能 截图如下: 关注一个用户(需要知道该用户uid) 取消关注一个用户(用户uid) 获取用户粉丝列表(授权用户的screen_ ...
- extjs Combobox动态加载数据问题,mode:local 还是remote
var fabircTypeDs = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'province.do' }), reade ...
- nginx支持flv MP4 扩展nginx_mod_h264_streaming,nginx-rtmp-module-master,yamdi
./configure \ --prefix=/usr/local/nginx \ --sbin-path=/usr/local/nginx/sbin/nginx \ --conf-path=/usr ...
- 《Java核心技术卷二》笔记(三)正则表达式
正则表达式语法 一个正则表达式描述了字符串的构成规则(模式).如果一个具体的字符串正好符合正则表达式描述的这个规则,这个字符串就是与表达式匹配的.先看一下怎么描述这种规则,也就是正则表达式语法.正则表 ...
- Linux 计划任务 Crontab 笔记与总结(3)Crontab 配置文件
[全局(系统)配置文件] /etc/crontab Linux 主要的配置文件都在 etc 目录下. cd /etc ls cron* vim crontab 进入 cron.d(服务) cd cro ...
- nginx 配置文件分析以及配置负载均衡器
修改Nginx核心配置文件nginx.conf # cat /usr/local/nginx/conf/nginx.conf user www www; worker_processes ; # 工作 ...
- windows下Gulp安装
目录: 1.安装nodejs2.使用命令行3.npm介绍4.选装cnpm5.全局安装gulp6.新建package.json文件7.本地安装gulp插件8.新建gulpfile.js文件9.运行gul ...
- Failed to connect to remote VM. Connection refused. Connection refused: connect.
eclipse debug启动经常出现这个错误,已经启动了debug进程,X掉重新启动即可.
- C++ 常用术语(后续补充)
内存对齐常量折叠 堆栈解退(stack unwinding) 模板特化模板偏特化 模板实例化 函数对象 单一定义规则(One-Definition Rule,ODR) 自引用 对象切片(objec ...
- oracle sqlplus常用命令
登录到sqlplus sqlplus user/pwd@dbname 不登录使用 sqlplus /nolog 查看当前登录用户 show user; 更改用户密码 ALTER USER USER I ...