A.概念
1.移动app非常容易受到其他的系统、软件事件的干扰,如来电、锁屏
2.app受到干扰的时候,UIApplication会通知delegate,来代理处理干扰事件
3.delegate可以处理的事件
(1)app声明周期(启动、关闭)
(2)系统事件(来电)
(3)紧急事件(内存警告)
 
B.使用
称为delegate的条件:遵守UIApplicationDelegate协议
项目开始会自动创建:AppDelegate
 
1.delegate方法
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"app启动完毕的时候调用");
return YES;
} - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
NSLog(@"app接收到内存警告时调用");
} - (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"app进入后台的时候调用");
} - (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"app将要被挂起");
} - (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"app回到前台");
} - (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"app激活后");
} - (void)applicationWillTerminate:(UIApplication *)application {
NSLog(@"app将要关闭");
}
(1)一般的app操作触发delegate代理监听事件流程:
 
(2)整个app的启动过程:
 
 
2.main函数中调用的UIApplicationMain函数
 int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
 
函数定义:
UIKIT_EXTERN int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
 
(1)principalClassName
     a.Application类名,必须是UIApplication或者其子类的类名
     b.如果是nil,则默认是UIApplication
     c.UIApplicationMain函数根据principalClassName创建UIApplication对象
 
(2)delegateClassName
     a.delegate类名,此类必须遵守UIApplicationDelegate协议
     b.UIApplicationMain函数根据delegateClassName创建一个delegate,并将其赋值给UIApplication的delegate属性
 
(3)进入Main Runloop 事件循环,使用delegate对事件进行监听
 
(4)程序正常退出,UIApplicationMain函数返回
 
 
 
 

[iOS基础控件 - 6.10.6] UIApplicationDelegate & 程序启动过程的更多相关文章

  1. [iOS基础控件 - 6.10.2] PickerView 自定义row内容 国家选择Demo

    A.需求 1.自定义一个UIView和xib,包含国家名和国旗显示 2.学习row的重用   B.实现步骤 1.准备plist文件和国旗图片     2.创建模型 // // Flag.h // Co ...

  2. [iOS基础控件 - 6.10.7] UIWindow

    A.UIWindow概念 1.继承UIView,是一种特殊的UIView 2.通常一个APP只有一个UIWindow 3.iOS程序启动后,创建的第一个视图就是UIWindow 4.没有UIWindo ...

  3. [iOS基础控件 - 6.10.5] UIApplication

    A.概念 1.UIApplication对象是应用程序的象征,每个应用都有 2.单例 3.[UIApplication sharedApplication] 获取 4.iOS启动创建的第一个对象 5. ...

  4. [iOS基础控件 - 6.10] Notification 通知机制

    A.定义      iOS程序都有一个NSNotificationCenter的单例对象,用来负责发布不同对象之间的通知      任何对象都能够在NSNotificationCenter发布通知,发 ...

  5. [iOS基础控件 - 6.10.4] 项目启动原理 项目中的文件

    A.项目中的常见文件 1.单元测试Test   2.Frameworks(xCode6 创建的SingleView Project没有) 依赖框架   3.Products 打包好的文件   4. p ...

  6. [iOS基础控件 - 6.10.3] DatePicker & UIToolBar

    A.需求 1. 学习DatePicker的基本配置 2.使用TextField召唤指定类型的输入键盘View,这里使用DatePicker 3.给输入键盘上方加上一个UIToolBar,实现如关闭键盘 ...

  7. [iOS基础控件 - 6.10.1] PickerView 餐点搭配Demo

    A.需求 1.使用PickerView做出有3列餐点(水果.主菜.饮料)的搭配Demo 2.选择的餐点实时显示在“显示区” 3.提供“随机”按钮,随机选择菜品搭配   B.实现步骤 1.拖入一个Pic ...

  8. [iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表"练习)

    A.概述      在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能      1.按钮点击后,显示为“已下载”,并且不 ...

  9. iOS 基础控件(下)

    上篇介绍了UIButton.UILabel.UIImageView和UITextField,这篇就简短一点介绍UIScrollView和UIAlertView. UIScrollView 顾名思义也知 ...

随机推荐

  1. CY7C68013A的一点总结

    一. 值得参考的资料:FX2 TechRefManual.USB应用开发宝典. LabVIEW-USB通信简单教程(用于参考生成labview驱动程序).USB设备请求和描述符整理(仅用于理解描述符的 ...

  2. Pod::Executable pull

    使用cocoapods 的时候遇到了以下错误:[!] Pod::Executable pull Updating eaf98af..ba3c030 error: Your local changes ...

  3. js对联广告代码,兼容性高

    var browser = { ie6: function () { return ((window.XMLHttpRequest == undefined) && (ActiveXO ...

  4. 求强连通分量模板(tarjan算法)

    关于如何求强连通分量的知识请戳 https://www.byvoid.com/blog/scc-tarjan/ void DFS(int x) { dfn[x]=lowlink[x]=++dfn_cl ...

  5. jQuery的datatable怎么才能给某一列添加超链接?

    aocolumeDef.这个里面去定义.return返回的字符串会代替原来cell里面的内容 e.g: datatable=$('#dt_basic').dataTable({ "bAuto ...

  6. 【C#学习笔记】获取当前应用程序所在路径及环境变量

    转自:http://www.cnblogs.com/netlyf/archive/2011/06/22/2086718.html 一.获取当前文件的路径 string str1=Process.Get ...

  7. FFMPEG 库移植到 VC 需要的步骤

    在VC下使用FFMPEG编译好的库,不仅仅是把.h,.lib,.dll拷贝到工程中就行了,还需要做以下几步.(此方法适用于自己使用MinGW编译的库,也同样适用于从网上下载的编译好的库,例如http: ...

  8. delphi 转换sql server 中的 bit类型

    FieldByName('e').AsBoolean = false 其中e为 sql server 中的bit类型.

  9. Ios 程序封装,安装流程

    转:http://www.myexception.cn/operating-system/1436560.html Ios 程序打包,安装流程 一.发布测试,是指将你的程序给   * 你的测试人员,因 ...

  10. 顶 企业站常用css横向导航菜单

    <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/T ...