zoukankan      html  css  js  c++  java
  • [开发笔记]UIApplication介绍

    LJW---UIApplication的主要介绍^-^!
    

    什么是UIApplication?

    UIApplication对象是应用程序的象征.
    每一个应用都有自己的UIApplication对象,这个对象是系统自动帮我们创建的, 它是一个单例对象.
    一个iOS程序启动后创建的第一个对象就是UIApplication对象
    我们只能通过[UIApplication sharedApplication]获得这个单例对象,不能够手动去创建它.

    UIApplication作用?

    利用UIApplication对象,能进行一些应用级别的操作.

    • 可以设置应用程序图标右上角的红色提醒数字
    • 设置联网指示器的可见性
    • 可以设置应用程序的状态栏
    • 进行应用之间的跳转.

    模仿UIApplication单例.
    要求:程序一启动就创建创建对象.
    创建的对象只能通过share的方式获取对象.
    不能够进行alloc 操作,当执行alloc时, 程序发生崩溃

    • 1.程序一启动的时候就创建对象.
      当类被加载到内存的时候就会调用load的方法,它会比main优先调用
    static Persion *_instance; 
    +(void)load{ 
         想要保存创建的对象, 要用成员属性,但是现在是类方法, 没有办法访问成员属性. 
         所以搞了一个static的静态变量进行保存 
         创建对象 
         _instance = [[self alloc] init]; 
    } 
    
    
    • 2.保证调用alloc时会产生异常.
      重写系统的是alloc方法
    +(instancetype)alloc{ 
         当调用alloc方法时,先查看一下_instance有没有值,如果已经有值的话,直接抛出异常. 
         if(_instance){ 
              NSException *exception = [NSException exceptionWithName: 
              @"NSInternalInconsistencyException" 
              reason: 
              @"There can only be one Persion instance." userInfo:nil]; 
              抛出异常 
              [exception raise]; 
         } 
              保持系统的做法. 
              return [super alloc]; 
         } 
         
    

    3.通过share方式获取对象

    +(instancetype)sharePersion{ 
         return _instance 
    } 
    

    UIApplication功能

    1.设置应用提醒数字

    获取UIApplication对象
    UIApplication *ap = [UIApplication sharedApplication];

    在设置之前, 要注册一个通知,从ios8之后,都要先注册一个通知对象.才能够接收到提醒.
    UIUserNotificationSettings *notice = [UIUserNotificationSettings  settingsForTypes:UIUserNotificationTypeBadge categories:nil];

    注册通知对象
    [ap registerUserNotificationSettings:notice];
    设置提醒数字
    ap.applicationIconBadgeNumber = 10;

    2.设置连网状态
    ap.networkActivityIndicatorVisible = YES;

    3.设置状态栏
    应用程序的状态栏,默认是交给控制器来管理的.
    控制器提供的方法,可以直接重写这个方法
    在控制器当中设置状态栏样式
    -(UIStatusBarStyle)preferredStatusBarStyle{      return UIStatusBarStyleLightContent; }

    隐藏状态栏,通过控制器的方式.同样实现方法:
    返回NO显示
    返回YES为隐藏
    -(BOOL)prefersStatusBarHidden{ return NO; }

    通常在开发当中都是应用程序来管理状态栏的.来做统一管理,不然的话, 会有很多个控制器.会非常的麻烦.

    想要让应用程序管理状态栏,要在info.plist当中进行配置,
    添加一个key值:是最后一个,View controller-based status bar appearance
    设置为NO.就是应用程序来管理了.

    通过UIApplication来管理状态.
    1.获取UIApplication
    UIApplication *ap = [UIApplication sharedApplication];
    2.设置状态栏样式.
    ap.statusBarStyle = UIStatusBarStyleLightContent;
    3.设置状态的隐藏
    ap.statusBarHidden = YES;

    4.跳转网页
    UIApplication *ap = [UIApplication sharedApplication];
    URL:协议头://域名
    应用程序通过协议头的类型,去打开相应的软件.
    NSURL *url =[NSURL URLWithString:@"http://www.520it.com"]; [ap openURL:url];

    打电话
    [application openURL:[NSURL URLWithString:@"tel://10086"]];
    发短信
    [app openURL:[NSURL URLWithString:@"sms://10086"]];

    UIApplication代理

    所有的移动操作系统都有个致命的缺点:app很容易受到打扰。
    比如一个来电或者锁屏会导致app进入后台甚至被终止
    还有很多其它类似的情况会导致app受到干扰,在app受到干扰时,会产生一些系统事件,
    这时UIApplication会通知它的delegate对象,让delegate代理来处理这些系统事件

    delegate可处理的事件包括:
    • 应用程序的生命周期事件(如程序启动和关闭)
    • 系统事件(如来电)
    • 内存警告
      ...

    UIApplication会在程序一启动时候创建一个遵守UIApplicationDelegate代理.
    这个就是我们程序一创建时的AppDelegate类.AppDelegate就是遵守了UIApplicationDelegate协议.
    在这个类中很定义很多监听系统事件的方法.同时也定义了一些应用程序的生命周期方法.

    主要方法有:

    应用程序的生命周期
    应用程序启动完成的时候调用

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    NSLog(@"%s",__func__); 
    return YES; 
    } 
    

    当我们应用程序即将失去焦点的时候调用

    - (void)applicationWillResignActive:(UIApplication *)application { 
    NSLog(@"%s",__func__); 
    } 
    

    当我们应用程序完全进入后台的时候调用

    - (void)applicationDidEnterBackground:(UIApplication *)application{ 
    NSLog(@"%s",__func__); 
    } 
    

    当我们应用程序即将进入前台的时候调用

    - (void)applicationWillEnterForeground:(UIApplication *)application { 
              NSLog(@"%s",__func__); 
    } 
    

    当我们应用程序完全获取焦点的时候调用
    只有当一个应用程序完全获取到焦点,才能与用户交互.

    - (void)applicationDidBecomeActive:(UIApplication *)application { 
              NSLog(@"%s",__func__); 
    } 
    

    当我们应用程序即将关闭的时候调用

    - (void)applicationWillTerminate:(UIApplication *)application { 
              NSLog(@"%s",__func__); 
    } 
    
  • 相关阅读:
    ubuntu進入dos界面命令 ubuntu進入圖形界面命令
    CentOS 8.2远程连接vncserver升级后1.10.1无法启动解决记录
    Eclipse:Cannot complete the install because of a conflicting dependency.问题解决
    Android SDK更新以及ADT更新出现问题的解决办法
    Visual Studio 2013开启JavaScript的智能提示功能
    linux中mysql密码找回的两种方式
    Oracle 物化视图 说明
    linux下mysql字符集编码问题的修改
    mysql 启动错误-server PID file could not be found
    在linux安装mysql,并设置远程访问
  • 原文地址:https://www.cnblogs.com/ljwiOS/p/5727422.html
Copyright © 2011-2022 走看看