文档章节

iOS应用程序启动原理

GSChan
 GSChan
发布于 2016/09/28 12:04
字数 344
阅读 8
收藏 0
iOS

1、程序一启动就会调用main.m函数

2、调用UIApplicationMain(int argc, char *argv[], NSString * __nullable principalClassName, NSString * __nullable delegateClassName)

  2.1. argc:执行main函数需要传入参数数组的个数

  2.2. argv:执行main函数需要传入的参数数组

  2.3. principalClassName:根据传入参数创建UIApplication对象,并设置UIApplicationMain对象的代理,需要传入 UIApplication及其子类的名字;若传入nil,默认传入UIApplication的类名

  2.4.delegateClassName:根据传入参数创建对象,并设置为UIApplication代理对象, principalClassName传入UIApplication子类的类名,那么delegateClassName也必须传子类的类名

注:苹果官方文档对于UIApplicationMain(int argc, char *argv[], NSString * __nullable principalClassName, NSString * __nullable delegateClassName)描述

3.建立一个主的事件循环,包括应用程序的run loop

4.加载info.plist文件

4.1.如果info.plist文件中有Main Storyboard file base name,那么就去加载Main.storyboard,根据Main.storyboard的指向创建对应的控制器,在创建控制器之前,先去创建UIWindow并设置为主窗口(keywindow),将控制器设置为窗口的跟控制器(rootViewController),并将控制器的view添加到window上(self.window addSubview view),(view之所以能够显示就是因为有窗口-即UIWindow)调用AppDelegate代理方法

4.2.如果没有Main Storyboard file base name,那么就会调用AppDelegate代理方法

注:苹果给出图如下:

© 著作权归作者所有

上一篇: iOS多线程
下一篇: 位运算符
GSChan
粉丝 0
博文 8
码字总数 10691
作品 0
杭州
程序员
私信 提问
IOS学习,最简单的表格应用程序,学习,列出博客

IOS编程浅蓝教程,这是博客地址http://www.cnblogs.com/haichao/category/425378.html IOS编程浅蓝教程:锲子 IOS编程浅蓝教程(一)先决条件:开始iOS编程的必要准备 IOS编程浅蓝教程(二) Hel...

andy521zhu
2015/01/17
187
0
姗姗来迟的苹果安全:爱加密全球首推iOS应用加密技术

苹果iOS系统和安卓系统作为全球使用人数最多的手机操作系统,一直以来都备受关注,尤其在安全领域,安卓应用被破解、盗版的现象已经成为普遍;而iOS系统的封闭性被广大开发者一直认为是最安全...

3eera
2014/11/25
686
10
使用UniDAC在Delphi XE4中开发iOS应用

使用UniDAC在Delphi XE4中开发iOS应用   核心提示:Delphi XE4的发布让很多Delphi开发者欣喜若狂,毫无疑问它使得Delphi开发更简单且更容易被理解,而且让开发无论是iPhone、iPad还是iPod的...

vga
2014/06/01
573
0
疯狂ios讲义之美化iOS应用

如果点击模拟器下方的Home按键或按下command+Shift+H快捷键(Retina屏幕的模拟器没有提供Home按键,则只能通过快捷键操作),模拟器返回应用程序列表,此时将可以看到刚刚开发的应用程序,但...

博文视点
2014/01/21
819
2
Xcode ARC需要什么版本的环境支持

Mac OS X v10.6 和 v10.7 (64位应用) 的Xcode 4.2以上版本支持ARC,iOS 4 和 iOS 5 下ARC都能工作,但Weak不支持Mac OS X v10.6 和 iOS 4,所以要想在iOS 4下运行用ARC的程序,只能用strong。...

东方皓
2013/05/06
79
0

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
42
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部