zoukankan      html  css  js  c++  java
  • 多控制器之UIApplication

    UIApplication

    简介

    • UIApplication对象是应用程序的象征
    • 每个应用都有自己的UIApplication对象,其是单例对象,通过[UIApplication sharedApplication]可以获得,不能用alloc来创建
    • 一个程序启动后创建的第一个对象就是UIApplication对象
    • 利用这个对象,可以进行一个应用级别的操作:
      • 显示程序图标右上角的红色提醒数字(ios8之后要先注册通知):applicationIconBadgeNumber(属性)
      • 显示联网指示器的可见性(ios7之后交给控制器管理,所以要设置):statusBarHidden(属性) 
      • 打电话:openURL(方法)
      • 发短信:openURL(方法)
      • 浏览网页:openURL(方法)
      • 等等
    • 注意:load类方法(不能访问属性):当类加载到内存中就调用,会比main方法调用还早

    代理delegate

    • app受到干扰会产生一系列琐事,这时UIApplication会通知它的代理对象来处理
    • 处理事件:

      // 应用程序启动完成的时候调用
      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      return YES;
      }
      // 当应用程序即将失去焦点(不可与用户交互)
      - (void)applicationWillResignActive:(UIApplication *)application {
      }
      // 应用程序进入后台
      - (void)applicationDidEnterBackground:(UIApplication *)application {
      }
      // 应用程序将要进入前台
      - (void)applicationWillEnterForeground:(UIApplication *)application {
      }
      // 应用程序完全获得焦点(可与用户交互)
      - (void)applicationDidBecomeActive:(UIApplication *)application {
      }
      // 程序即将关闭的时候
      - (void)applicationWillTerminate:(UIApplication *)application {
      }

    应用程序的启动原理

    int main(int argc, char * argv[]) {
        @autoreleasepool {
            // 第三个参数:设置UIApplication的对象的名称,只能它或者它子类,nil == @"UIApplication"
            // 第四个参数:创建代理对象,遵守了UIApplicationDelegate协议,把这个对象设为应用程序(UIApplication)的代理
            //           用NSStringFromClass:将一个类名转换成字符串---1.提示功能 2.避免输入错误
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }
    // 程序的启动原理
    // 1.执行main -> UIApplicationMain
    // 2.创建UIApplication对象,并设置它的代理
    // 3.开启了一个事件循环(主运行循环)(死循环) -> 保证应用程序能一直运行
    // 4.应用程序加载Info.plist配置文件,判断该文件中是否有main值,如果有就会去加载Main.storyBoard,
         如果没有就执行didFinishLaunchingWithOptions:方法,应用程序启动完毕
  • 相关阅读:
    GDB调试共享库的问题
    Android 2.3 StageFright如何选定OMX组件的?
    Perforce client p4常见用法
    pthread_cond_signal只能唤醒已经处于pthread_cond_wait的线程
    正则表达式验证数据例子
    美国经济数据公布时间
    .net去除html标签代码
    js Array 方法|js Array 方法使用
    在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件
    日期格式正则表达式
  • 原文地址:https://www.cnblogs.com/LongLJ/p/5008419.html
Copyright © 2011-2022 走看看