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函数返回
 
 
 
 

最新文章

  1. ueditor使用canvas在图片上传前进行压缩
  2. 手机页面的meta标签
  3. Dynamics AX 2012 R2 堆栈跟踪:不能对客户端调用'unchecked'
  4. javaSwing文本域文件
  5. 拼图游戏 v1.1
  6. laravel 自定义命令
  7. python输出1到100之和的几种方法
  8. Ajax请求用户控件(.ascx)404错误
  9. Call From master/192.168.128.135 to master:8485 failed on connection exception: java.net.ConnectException: Connection refused
  10. 基于 docker 的yapi(快速部署)
  11. 【Leetcode】无重复字符的最长子串
  12. 将n个东西分成n1,n2,n3,n4,....nr 共 r组分给r个人有多少种分法。
  13. UVA10838 The Pawn Chess
  14. JS将"\/Date(1530104033000)\/" 格式化
  15. sublime text3支持Vue语法高亮显示
  16. yarn import 使用package-lock.json
  17. 简述各大 Linux 发行版,有主观,不完全,望见谅
  18. ant Table td 溢出隐藏(省略号)
  19. Lesson 3
  20. CentOS 7.5 部署蓝鲸运维平台

热门文章

  1. ASP.NET Web API上实现 Web Socket
  2. tuxedo入门
  3. sort+结构体实现二级排序
  4. git stash 暂存当前修改
  5. tahoma字体对中文字的影响
  6. Unique Encryption Keys (思维题 预处理)
  7. 函数 page_dir_get_n_heap
  8. ElasticSearch Remote Code Execution (CVE-2014-3120)
  9. [反汇编练习] 160个CrackMe之006
  10. 【C#学习笔记】退出程序