多控制器之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:方法,应用程序启动完毕
posted @ 2015-11-30 21:14  LongLJ  阅读(182)  评论(0编辑  收藏  举报