🔏
iOS
  • 前言
  • View编程参考
    • View/Window架构
    • Window
    • View
    • Animations
  • ViewController编程参考
    • 定义
    • 呈现视图控制器
  • UIKit
    • 关于应用开发
    • 保护用户隐私
    • 应用和环境
      • 应用声明周期
      • 应用启动
      • UIApplication
      • UIApplicationDelegate
    • Windows and Screens
      • Window
      • Scene
      • Screen
    • 视图和控制
      • UIView
Powered by GitBook
On this page
  • 定义
  • 概述
  • 子类

Was this helpful?

  1. UIKit
  2. 应用和环境

UIApplication

iOS中运行程序的集中控制和协调点。

定义

class UIApplication: UIResponder

概述

每个iOS应用都只有一个 UIApplication 实例(极少情况,有一个 UIApplication 的子类)。当应用启动,系统调用 UIApplicationMain 方法。在其他任务中,此方法创建了一个单例对象通过 shared 属性获取。

应用的 application 对象处理传入事件的路由。通过控制对象(UIControl类的实例)来分发操作消息给适当的对象。application 对象维护一个已打开的window(UIWindow对象)列表,可用于检索应用的UIView对象。

UIApplication类定了一个符合 UIApplicationDelegate 协议的委托并且必须实现协议的部分方法。application对象通知重要的系统运行时事件给委托人(例如、应用启动、内存警告、应用终止),使它有机会做出合适的响应。

应用可以通过 open(options:completionHanlder)方法来协作处理例如邮件、图片之类的资源。例如,应用可以调用这个方法传递邮件地址来拉起邮件应用并显示信息。

此类中的API允许管理设备特定的行为,使用 UIApplication 对象执行如下操作:

  • 暂时暂停传入的触摸事件(beginIgnoringinteractionEvents);

  • 注册推送(registerForRemoteNotifications);

  • 触发撤销重做UI(applicationSupportsShakeToEdit);

  • 检测是否已安装能够处理URL scheme的应用(canOpenURL);

  • 申请后台运行(beginBackgroundTask(expirationHandler)/beginBackgroundTask(withName:expirationHandler));

  • 安排或者取消本地通知(scheduleLocalNotification 和 cancelLocalNotification)

  • 协调远程控制事件的接受(beginReceivingRemoteControlEvents 和 endReceivingRemoteControlEvents);

  • 执行应用级状态还原任务;

子类

大部分应用不需要继承 UIApplication。而是使用程序委托来管理系统与应用间的交互。

如果应用必须在系统之前处理传入事件,可以自定义事件或操作调度机制。为了达到目的,继承 UIApplication 重写 sendEvent 和 sendEvent(to:from)方法。对于所有监听的事件,处理完成之后通过 super.sendEvent 方法分发回系统。

Previous应用启动NextUIApplicationDelegate

Last updated 4 years ago

Was this helpful?