iOS程序启动的流程
来源:互联网 发布:一洋淘宝运营助手账号 编辑:程序博客网 时间:2024/05/17 03:43
在几乎所有的程序开发中程序一般都是从main函数开始运行的,那么IOS程序也不例外,在上图中我们可以看到Xcode为我们生成了一个main.m文件:
这个默认的iOS程序就是从main函数开始执行的,但是在main函数中我们其实只能看到一个方法,这个方法内部是一个消息循环(相当于一个死循环),因此运行到这个方法UIApplicationMain之后程序不会自动退出,而只有当用户手动关闭程序这个循环才结束。这个方法有四个参数:
- 第一个参数和第二个参数其实就是main函数的参数,分别代表:参数个数、参数内容;
- 第三个参数代表UIApplication类(或子类)字符串,这个参数默认为nil则代表默认为UIApplication类,用户可以自定义一个类继承于这个类;如果为nil则等价于NSStringFromClass([UIApplication class]),大家可以自己试验,效果完全一样;UIApplication是单例模式,一个应用程序只有一个UIApplication对象或子对象;
- 第四个参数是UIApplication的代理类字符串,默认生成的是AppDelegate类,这个类主要用于监听整个应用程序生命周期的各个事件(其实类似于之前我们文章中提到的事件监听代理),当UIApplication运行过程中引发了某个事件之后会调用代理中对应的方法;
- 也就是说当执行UIApplicationMain方法后这个方法会根据第三个参数创建对应的UIApplication对象,这个对象会根据第四个参数AppDelegate创建并指定此对象为UIApplication的代理;同时UIApplication会开启一个消息循环不断监听应用程序的各个活动,当应用程序生命周期发生改变UIApplication就会调用代理对应的方法。
AppDelegate这个类中定义了应用程序生命周期中各个事件的执行方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;程序启动之后执行,只有在第一次程序启动后才执行,以后不再执行;
- (void)applicationWillResignActive:(UIApplication *)application;程序将要被激活时(获得焦点)执行,程序激活用户才能操作;
- (void)applicationDidEnterBackground:(UIApplication *)application;程序进入后台后执行,注意进入后台时会先失去焦点再进入后台;
- (void)applicationWillEnterForeground:(UIApplication *)application;程序将要进入前台时执行;
- (void)applicationDidBecomeActive:(UIApplication *)application;程序被激活(获得焦点)后执行,注意程序被激活时会先进入前台再被激活;
- (void)applicationWillTerminate:(UIApplication *)application;程序在终止时执行,包括正常终止或异常终止,例如说一个应用程序在后太运行(例如音乐播放软件、社交软件等)占用太多内存这时会意外终止调用此方法;
- iOS程序启动的流程
- iOS程序的启动流程
- ios程序启动流程
- IOS程序启动流程
- UI03自定义视图 IOS程序启动流程
- ios程序的完整流程
- iOS入门(二十六)iOS程序启动流程
- 【iOS开发】iOS程序的运行流程
- OGRE中example程序的启动流程
- iOS/iPhone 程序文件目录结构以及启动流程
- iOS/iPhone 程序文件目录结构以及启动流程
- iOS/iPhone 程序文件目录结构以及启动流程
- iOS/iPhone 程序文件目录结构以及启动流程
- iOS/iPhone 程序文件目录结构以及启动流程
- iOS 程序文件目录结构以及启动流程
- iOS/iPhone 程序文件目录结构以及启动流程
- Cocos2d-x之 IOS工程平台程序启动流程分析
- iOS/iPhone 程序文件目录结构以及启动流程
- Activity的四种启动模式简单理解
- microSD Card Installation(分区及格式化)
- Volley缓存-服务端实现_Java
- jQuery用addClass方法同时增加多个class属性
- 【操作系统】U盘如何挂载到Linux系统上
- iOS程序启动的流程
- argc和*argv[]函数简记
- 数据结构课程设计-12月28日
- HDU1003 Max Sum
- Mac os charles抓包http/https的简单使用介绍(附3.10.1mac破解版下载链接)
- 设计模式系列一:单例模式
- 架构之路(1):目标
- 行为树-学习笔记(1)
- 编程赚钱的7个方法