UIApplication
iOS中运行程序的集中控制和协调点。
定义
概述
每个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 方法分发回系统。
Last updated
Was this helpful?