【原创】storyboard启动应用程序的大致流程

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

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

用户点击APP图标——程序代码及各种资料会迅速加载进入手机内存——然后会读取和执行info.plist文件,发现设置了启动页为LaunchScreen.storyboard和Main.storyboard——首先将启动页LaunchScreen.storyboard中内容截图显示到手机屏幕上(让启动页拖住用户,为程序真正的执行争取时间),空的项目通常会看到一张空白的大View。

——显示启动页后,iOS系统开始调用main.m中的int main()函数,创建application对象(UIApplication类)和appDelegate对象(AppDelegate类),并将application.delegate = appDelegate; ——之后application对象调用[application.delegate  application:didFinishLaunchingWithOptions:]; ——于是程序就来到了AppDelegate类中的application:didFinishLaunchingWithOptions:方法中。—— 执行该方法中Xcode在后台自动添加的启动代码,大致如下(模拟后台操作代码,仅供参考):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];

    //self.window.backgroundColor = [UIColor whiteColor]; //默认为nil

    //ViewController *rootVC = [[ViewController alloc]init];//这样写相当于重新创建了一个控制器,那么在storyboard中那个控制器的view上拖控件就无效。

    //在Storyboard中通过ID获取到ViewController
     UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
    UIViewController *rootVC = [story instantiateViewControllerWithIdentifier:@"RootVC"];

    self.window.rootViewController = rootVC;

    [self.window makeKeyAndVisible]; //从这句后跳出到ViewController中执行loadView和viewDidLoad看是否有自定义的变化,然后回来执行return YES;

    return YES;   //执行return YES;后再次跳到ViewController中执行viewDidAppear,然后显示屏幕(第二次显示,第一次是显示启动页)
}

——Xcode会从Storyboard中实例化并加载viewController及其view视图,执行loadView和viewDidLoad语句看看程序员是否有定制UI界面 ——返回finishLaunch方法执行完return YES; —— 在到ViewController类中执行viewWillAppear和viewDidAppear方法 ——最后显示屏幕。

  所以,在第二次显示屏幕前调用的最后一个方法是viewDidAppear。

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

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

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

时间: 2024-10-15 21:42:18

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

php程序的三大流程控制

php程序的三大流程控制 ①  顺序控制(从上到下,从左到右) ②分支控制 if(条件表达式){ //n多语句 }else if (条件表达式){ //n 多语句 }else if(条件表示式){ //. }//这里可能还有更多的else if else{ } u  switch分支语句 基本语法结构 switch(表达式){   case 常量1: //n多语句; break; case 常量2: //n多语句 break; default:    //n多语句;        break;

minidlna源码初探(二)—— SSDP设备发现的大致流程

前言: 之前有专文介绍了minidlna中的UPNP功能,内中介绍其中包含的SSDP(简单发现协议),SOAP(简单对象访问协议)等几个协议(http://blog.csdn.net/sakaue/article/details/19070735).本文将根据minidlna的程序流程,概述SSDP的流程,为下一部分ACE实现做铺垫. 设备发现的大致流程: 首先,根据UPNP的规范: 在设备加入网络,UPnP发现协议允许设备向控制点广告它的服务.它使用向一个标准地址和端口多址传送发现消息来实现.

程序的编译流程

程序的基本流程如图: 1. 预处理 预处理相当于根据预处理指令组装新的C/C++程序.经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同. 读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理 ①将所有的"#define"删除,并且展开所有的宏定义 ②处理所有的条件编译指令,如:"#if"."#ifdef"."#elif"."#el

杂谈——Android从启动到程序运行发生的事情

转载请注明出处 博客地址:http://blog.csdn.net/JonsTank2013/article/details/51118563 作者:李中权 前言 好久没有写博客了,瞬间感觉好多学了的东西不进行一个自我的总结与消化总归变不成自己的.通过博客可能还可以找到一些当初在学习的时候没有想到的问题.想了半天,从大二上学期自学Android以来还没有对Android从启动到程序运行期间进行一个完整的归纳,刚好最近又学到了一些新东西,那就以这篇博客为媒介,总结一下从Android启动到程序运行

游戏制作大致流程粗谈之二

上次讲到了游戏原画的制作,在原画师完成原画的创作后,负责建模的同学便需要通过建模工具对原画进行建模,包括游戏的人物模型,场景,物品,等等等等, 游戏建模大致流程如下:1.建立模型   2.UV展开 3.绘制贴图 4.骨骼动画,同时还需要进行编辑的有模型的碰撞体积等等,然后用贴图对模型进行渲染,同时修改 一些材质. 游戏的模型完成后便该有程序员同学来进行代码的编写了,目前比较流行的游戏编程语言有C++,JAVA等,游戏编程接口有DirectX,OpenGL等.编程是游戏制作 环节中耗时最长,工作量

C# windows服务启动winform程序不显示UI问题解决

由于工作需要写一个解决winform程序自动更新下载重启的自动更新程序,之前用控制台全部实现,然而换成windows  service出现了两个问题,一个是路径问题(http://baidu.com),一个是服务启动其他winform程序不显示UI问题. 本篇解决UI显示问题. 以下为引用尤尼博文(原文地址:http://www.cnblogs.com/luxilin/p/3347212.html): 我开发的系统中有一接口程序(这里就称Task,是一个C#的Console Applicatio

WinCE C#程序,控制启动时只能启动一个程序,使用互斥量来实现,该实现方法测试通过

</pre><pre code_snippet_id="430174" snippet_file_name="blog_20140718_5_4634982" name="code" class="csharp"> </pre><pre code_snippet_id="430174" snippet_file_name="blog_20140718_5_

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

原文出自Rui Figueiredo的博文<External Login Providers in ASP.NET Core> (本文很长) 摘要:本文主要介绍了使用外部登陆提供程序登陆的流程,以及身份认证的流程. 为了能够使用google.facebook.twitter.微博等外部登陆提供程序,从而避免创建本地账户以及电子邮件验证等繁琐步骤,我们一般会引用到外部登陆服务,将验证用户身份的任务委托给他们.外部验证最为流行的协议就是OAuth2和OpenId Connect. 在Asp.Net

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

xlua是由腾讯维护的一个开源项目,我们可以在github上下载这个开源项目并查看一些相关文档 官网:https://github.com/Tencent/xLua 配置文档:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/hotfix.md 常见问题解答:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/faq.md 接下来我们来走一遍使用xlua的大致