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:方法,应用程序启动完毕
  • 相关阅读:
    pthread_key_t和pthread_key_create()详解
    oracle的时间
    spring加载bean报错:expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
    MyBatis调用存储过程
    java的时间
    java的日期
    java中的多态
    笔记本设置wifi热点并抓包
    WiresShark使用说明
    HTTP协议概述
  • 原文地址:https://www.cnblogs.com/LongLJ/p/5008419.html
Copyright © 2011-2022 走看看