zoukankan      html  css  js  c++  java
  • UIApplication

    什么是UIApplication

        • UIApplication对象是应用程序的象征
        • 每一个应用都有自己的UIApplication对象,而且是单例的
        • 通过[UIApplication sharedApplication]可以获得这个单例对象
        • 一个iOS程序启动后创建的第一个对象就是UIApplication对象
        • 利用UIApplication对象,能进行一些应用级别的操作
        • UIApplication的常用属性
        • 设置应用程序图标右上角的红色提醒数字

    @property(nonatomic) NSInteger applicationIconBadgeNumber;

        • 设置联网指示器的可见性

    @property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;

    利用UIApplication来管理状态栏

        • 如果想利用UIApplication来管理状态栏,首先得修改Info.plist的设置
        • openURL:
        • UIApplication有个功能十分强大的openURL:方法

    - (BOOL)openURL:(NSURL*)url;

        • openURL:方法的部分功能有
        • 打电话

    UIApplication *app = [UIApplication sharedApplication];

    [app openURL:[NSURL URLWithString:@"tel://10086"]];

        • 发短信

    [app openURL:[NSURL URLWithString:@"sms://10086"]];

        • 发邮件

    [app openURL:[NSURL URLWithString:@"mailto://12345@qq.com"]];

        • 打开一个网页资源

    [app openURL:[NSURL URLWithString:@"http://ios.itcast.cn"]];

        • 打开其他app程序
        • UIApplicationdelegate
        • 所有的移动操作系统都有个致命的缺点:app很容易受到打扰。比如一个来电或者锁屏会导致app进入后台甚至被终止
        • 还有很多其它类似的情况会导致app受到干扰,在app受到干扰时,会产生一些系统事件,这时UIApplication会通知它的delegate对象,让delegate代理来处理这些系统事件
        • delegate可处理的事件包括:
        • 应用程序的生命周期事件(如程序启动和关闭)
        • 系统事件(如来电)
        • 内存警告
        • 每次新建完项目,都有个带有“AppDelegate”字眼的类,它就是UIApplication的代理
        • AppDelegate默认已经遵守了UIApplicationDelegate协议,已经是UIApplication的代理
        • 1>开启事件循环后显示Default.png-->加载完毕Default.png显示,执行didFinishlaunchingWithOption:这个方法,当程序进入后台,再次通过图标进入APP是这个方法,不会调用,当在后台将程序杀死,再次运行程序这个方法才会执行,只加载一次,杀死后再次重新启动才会调用.

        • 2>程序正在运行时被打断(来电话)程序会自动进入后台,调用EnterBackground方法,此时可以在这个方法中保存程序信息.
        • 3>delegate是用来就爱你听系统事件的:系统事件就是进入前台,后台,受到内存警告...delegate监听到就执行相应的方法.
        • 4>事件循环开启后,事件循环会不停检测事件队列(fifo)中的事件,包括系统事件和其他事件,所有事件都会加入到事件队列中,然后拿出来一个一个处理.每当监听到一个事件会调用相应的方法.
        • 不断遍历队列中的事件来处理.
        • UIApplicationMain
        • main函数中执行了一个UIApplicationMain这个函数
        • int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
        • argcargv:直接传递给UIApplicationMain进行相关处理即可
        • principalClassName:指定应用程序类app的象征),该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值
        • delegateClassName:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议
        • UIApplicationMain函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性
        • 接着会建立应用程序的Main Runloop(事件循环),进行事件的处理(首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法)
        • 程序正常退出时UIApplicationMain函数才返回

  • 相关阅读:
    Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
    用户画像——“打标签”
    python replace函数替换无效问题
    python向mysql插入数据一直报TypeError: must be real number,not str
    《亿级用户下的新浪微博平台架构》读后感
    【2-10】标准 2 维表问题
    【2-8】集合划分问题(给定要分成几个集合)
    【2-7】集合划分问题
    【2-6】排列的字典序问题
    【2-5】有重复元素的排列问题
  • 原文地址:https://www.cnblogs.com/LDSmallCat/p/4967932.html
Copyright © 2011-2022 走看看