iOS学习之 UIApplication

UIApplication

  • 基本概念
    • UIApplication对象是应用程序的象征,每一个应用都有自己的UIApplication对象,而且是单例模式的,不能通过 alloc init 方式创建,一个程序只允许一个
    • 一个 iOS 程序启动创建的第一个对象就是 UIApplication 对象,并且可以做一些应用级别的操作
  • 基本属性方法
    • @property(nonatomic) NSInteger applicationIconBadgeNumber; 设置应用程序图标右上角的红色提醒数字

    • @property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible; 设置联网指示器的可见性

    • -(BOOL)openURL:(NSURL *)url 十分强大的方法

          // TEL
          UIApplication *app = [UIApplication sharedApplication];
          [app openURL:[NSURL URLWithString:@"tel://10086"]];
          // SMS
          [app openURL:[NSURL URLWithString:@"mailto://[email protected]"]]
          // http
          [app openURL:[NSURL URLWithString:@"http://www.baidu.com"]];
          // 打开其他应用程序
      
      
  • StatusBar状态
    1. 从iOS7开始,系统提供了2种管理状态栏的方式
      • 通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏)
      • 通过UIApplication管理(一个应用程序的状态栏都由它统一管理)
    2. 在iOS7中,默认情况下,状态栏都是由UIViewController管理的,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式
      • - (UIStatusBarStyle)preferredStatusBarStyle; 状态栏的样式
      • - (BOOL)prefersStatusBarHidden; 状态栏的可见性
    3. 如果想通过 UIApplication 来管理状态栏, 首先得修改 Info.plist
      • 在文件的一个行的最后个一个key:View vontroller-based status bar appearance 改为 NO
      UIApplication *app = [UIApplication sharedApplication];
      // 隐藏状态栏
      [app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
          
      
  • UIApplicationdelegate
    • 常用的代理方法
      • 这些UIApplicationDelegate有什么用,监听应用程序的生命周期,监听内存警告,系统事件
      • - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 当应用程序启动完成的时候,系统会自动调用代理这个方法
      • - (void)applicationWillResignActive:(UIApplication *)application当应用程序失去焦点的时候就会调用
      • - (void)applicationDidEnterBackground:(UIApplication *)application当应用程序进入后台的时候就会调用
      • -(void)applicationWillEnterForeground:(UIApplication *)application当应用程序进入前台的时候就会调用
      • - (void)applicationDidBecomeActive:(UIApplication *)application当应用程序获取焦点的时候就会调用,只有当一个应用程序完全获取焦点的时候,应用程序才能够与用户交互
      • - (void)applicationWillTerminate:(UIApplication *)application当应用程序关闭的时候就会调用
      • - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application监听内存警告
    • main 函数中的UIApplicationMain这个函数
      • int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
        1. argc、argv:直接传递给UIApplicationMain进行相关处理即可
        2. principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类)。如果为nil = UIApplication
        3. delegateClassName:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议, 这里不能传 nil,如果传 nil 意味着 application 没有代理,就无法监听系统事件。
    • UIApplicationMain底层做事情
      1. 创建一个UIApplication对象,根据principalClassName创建
      2. 创建UIApplication代理对象,设置UIApplication代理
      3. 开启一个主要的事件循环,让程序一直运行,处理事件.
      4. 加载Info.plist文件,判断下有没有指定main.storyboard,如果有就加载

你可能感兴趣的:(iOS学习之 UIApplication)