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:方法,应用程序启动完毕
  • 相关阅读:
    python epoll
    解决linux下/etc/rc.local开机器不执行的原因
    xen4.1.2网桥配置
    用户激励设计[转]
    C#4.0的dynamic和var及object关键字辨析
    动态设置和修改Membership/Profile/RoleProvider的ConnectionString数据库连接字符串
    UseCase用例怎么画_UML用例UseCase的几个理解误区
    C#的delegate/event/Action/Func/Predicate关键字
    我为什么鄙视提倡加班的公司
    [转]个人成长之通关路!
  • 原文地址:https://www.cnblogs.com/LongLJ/p/5008419.html
Copyright © 2011-2022 走看看