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函数才返回

  • 相关阅读:
    计算小于12的阶乘
    ubuntu下gvim启动出现gtk warning Invalid input string
    UBUNTU基础知识
    Ubuntu下创建软链接
    linux命令行介绍及使用(二)
    Ubuntu问题sudo: /etc/sudoers is mode 0640should be 0440的解决方法
    安装mp3插件
    Ubuntu下GTK的安装
    linux命令行介绍及使用(三)
    VB.NET中用GDI+画饼图
  • 原文地址:https://www.cnblogs.com/LDSmallCat/p/4967932.html
Copyright © 2011-2022 走看看