zoukankan      html  css  js  c++  java
  • 【程序启动四大对象

    A.概念
    1.移动app非常容易受到其他的系统、软件事件的干扰,如来电、锁屏
    2.app受到干扰的时候,UIApplication会通知delegate,来代理处理干扰事件
    3.delegate可以处理的事件
    (1)app声明周期(启动、关闭)
    (2)系统事件(来电)
    (3)紧急事件(内存警告)
     
    B.使用
    称为delegate的条件:遵守UIApplicationDelegate协议
    项目开始会自动创建:AppDelegate
    Image(181)
     
    1.delegate方法
    复制代码
     1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     2     NSLog(@"app启动完毕的时候调用");
     3     return YES;
     4 }
     5 
     6 - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
     7     NSLog(@"app接收到内存警告时调用");
     8 }
     9 
    10 - (void)applicationDidEnterBackground:(UIApplication *)application {
    11     NSLog(@"app进入后台的时候调用");
    12 }
    13 
    14 - (void)applicationWillResignActive:(UIApplication *)application {
    15     NSLog(@"app将要被挂起");
    16 }
    17 
    18 - (void)applicationWillEnterForeground:(UIApplication *)application {
    19     NSLog(@"app回到前台");
    20 }
    21 
    22 - (void)applicationDidBecomeActive:(UIApplication *)application {
    23     NSLog(@"app激活后");
    24 }
    25 
    26 - (void)applicationWillTerminate:(UIApplication *)application {
    27     NSLog(@"app将要关闭");
    28 }
    29  
    复制代码
    (1)一般的app操作触发delegate代理监听事件流程:
    Image(182)
     
    (2)整个app的启动过程:
    Image(183)
     
     
    2.main函数中调用的UIApplicationMain函数
    1 int main(int argc, char * argv[]) {
    2     @autoreleasepool {
    3         return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    4     }
    5 }
     
    函数定义:
    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函数返回
     
  • 相关阅读:
    IntelliJ IDEA 如何在同一个窗口创建多个项目--超详细教程
    spring IOC原理
    java工作错误总结
    java跬步积累
    简单易懂设计模式——简单工厂模式
    Argo 项目入驻 CNCF,一文解析 Kubernetes 原生工作流
    电子书下载 | 超实用!阿里售后专家的 K8s 问题排查案例合集
    在生产环境中,阿里云如何构建高性能云原生容器网络?(含 PPT 下载)
    SIG Cloud Provider Alibaba 网研会第 2 期顺利召开 | 云原生生态周报 Vol. 46
    提问赠书 | 我们请了 7 位云原生专家,等你来问
  • 原文地址:https://www.cnblogs.com/kengsir/p/4269313.html
Copyright © 2011-2022 走看看