文档章节

关于iOS应用的启动顺序

小魂淡
 小魂淡
发布于 2015/01/28 23:35
字数 401
阅读 13
收藏 0

iOS应用程序和其他的应用程序基本一样,如果仔细查看新建的iOS项目中,就会发现在项目中是有main.m文件的,通过查看main文件可以看出iOS的程序也是从main函数开始的,但是应用程序内部的运行有事如何的呢?



int main(int argc, char * argv[]) {

    @autoreleasepool {

        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

    }

}


通过以上的main函数可以查看到UIApplicationMain函数的具体定义


UIKIT_EXTERN int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);


实际上启动的过程是在main函数中执行了另外一个函数UIApplicationMain这个函数

此函数带有4各参数,那么这四个参数又是什么呢?

第一个和第二个参数相信学过c以及java的人都会很眼熟,其实他们就是main函数中定义的两个参数的值

第三个参数principalClassName是指应用程序的类名,此类通常为UIApplication类或者子类,main函数中的参数为nil,当这个参数为空的时候,系统会将UIApplication设为默认的值

第四个参数delegateClassName从字面意思就可以看出应该就是第三个参数的代理类,其实它也就是应用程序的代理类,该类必须要实现UIApplicationDelegate协议

应用程序首先执行main函数然后根据main函数执行UIApplicationMain函数,根据此函数的参数principalClassName创建application程序对象,根据delegateClassName创建principalClassName的代理对象并将两者关联起来

© 著作权归作者所有

小魂淡
粉丝 1
博文 25
码字总数 15024
作品 0
西安
程序员
私信 提问
iOS程序员面试,绝对会遇到这些问题!

常见问题 你昨天/这周学习了什么? 你为什么热衷于软件开发? 你对哪一种控制系统比较熟悉? 是否参与过GitHub项目? 是否参与过GitHub或其他同类型网站的iOS开源项目? 请描述一下你的iOS应...

iOS开发_小迷糊
05/22
0
0
ios时间那点事--NSLocale

iOS时间那点事 NSLocale 若你只开发中国区的应用,需要保证用户修改当前语言环境时应用的显示不发生变化。而像NSDateFormatter这样的类,会根据设备的设置,自动返回不同语言的数据。为了保证...

JustBen
2013/08/22
6.5K
0
IOS学习,最简单的表格应用程序,学习,列出博客

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

andy521zhu
2015/01/17
186
0
IOS12开发者预览版第二版使用评测

     手头有一部iPhone 6s Plus,因为之前看同学和朋友们升到IOS 11后手机变得非常卡顿所以没有升级。最近偶然看到IOS 12针对旧机型做了性能优化,号称提升70%相机打开速度、50%键盘显示...

张旭乾
2018/06/23
0
0
【AR】开始使用Vuforia开发iOS(2)

原 设置iOS开发环境 安装Vuforia iOS SDK 如何安装Vuforia iOS示例 编译并运行Vuforia iOS示例 支持iOS金属 iOS 64位迁移 设置iOS开发环境 适用于iOS的Vuforia引擎目前支持运行iOS 9及更高版...

lichong951
2018/06/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7 安装 mysql5.7 版本(全)

centos 安装 版本说明 :centos7,mysql5.7 ,不是 centos7 可能有些命令不兼容 安装 mysql-server # 下载并安装 mysql yum wget -i -c http://dev.mysql.com/get/mysql57-community-relea......

sanri1993
25分钟前
3
0
Spring3.x升级到Spring4.x-5.x时关于MappingJacksonHttpMessageConverter的报错问题

在Spring4.x或者以上的版本强使用(不然会报错): org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 如果是Spring4.0获者以下的版本可以使用MappingJacksonH...

code-ortaerc
28分钟前
3
0
OSG 渲染状态污染到其它节点怎么解决?

在根节点补上初始状态

洛克人杰洛
30分钟前
3
0
grid 布局 设置行列间距

本文转载于:专业的前端网站➪grid 布局 设置行列间距 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="widt......

前端老手
42分钟前
3
0
spring-data-elasticsearch 和 Jackson 配合使用的bug

下面先简单描述项目。 项目依赖: dependencies { implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch', version: '2.1.0.RELEASE'......

Landas
43分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部