博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发之iOS程序的启动过程
阅读量:6344 次
发布时间:2019-06-22

本文共 1049 字,大约阅读时间需要 3 分钟。

程序启动的完整过程:

1main函数

2UIApplicationMain

* 创建UIApplication对象

* 创建UIApplication的delegate对象

3delegate对象开始处理(监听)系统事件(没有storyboard)

* 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法

* 在application:didFinishLaunchingWithOptions:中创建UIWindow

* 创建和设置UIWindow的rootViewController

* 显示窗口

3)根据Info.plist获得最主要storyboard的文件名,加载最主要的storyboard(storyboard)

* 创建UIWindow

* 创建和设置UIWindow的rootViewController

* 显示窗口

4UIApplicationMain

main函数中执行了一个UIApplicationMain这个函数:

int UIApplicationMain(int argc, char *argv[], NSString

*principalClassName, NSString *delegateClassName);

各参数含义:

argcargv:直接传递给UIApplicationMain进行相关处理即可。

principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值。

delegateClassName:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议。

 

UIApplicationMain函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性。

接着会建立应用程序的Main Runloop(事件循环),进行事件的处理(首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法)。

程序正常退出时UIApplicationMain函数才返回。

转载地址:http://idyla.baihongyu.com/

你可能感兴趣的文章
表格表单及样式重置、特性
查看>>
八月个人考核
查看>>
linux网卡绑定
查看>>
Oracle技术之缺少log_archive_config导致归档路径被禁用
查看>>
Oracle 临时表之临时表的应用问题
查看>>
Linux之进程查看与管理
查看>>
碟中谍:完成任务机房是核心
查看>>
戴尔联合微软开发私有云入门级系统
查看>>
图片轮播滚动
查看>>
关于客户端与服务端时区不同导致客户端上的时间不准问题的解决方案
查看>>
基于Windows AD的单点登录系统(二)
查看>>
第17章 重新登录
查看>>
java 表现层:jsp、freemarker、velocity
查看>>
内置函数, 递归, 二分法
查看>>
java jni和android java ndk
查看>>
Kotlin技术分享:中缀调用、解构声明
查看>>
property函数
查看>>
数论 - 组合数学 + 素数分解 --- hdu 2284 : Solve the puzzle, Save the world!
查看>>
.Net 从零开始构建一个框架之基本实体结构与基本仓储构建
查看>>
C#核编之内建数据类型
查看>>