【发布时间】:2016-04-02 20:03:19
【问题描述】:
已经有这样的问题得到了回答,但是我对答案不满意:Why does AppDelegate inherit from UIResponder?。
我想了解更多细节,因为我正在尝试了解 iOS 应用的架构。
据我所知,UIResponder 用于“响应”外力(即触摸事件、运动事件等)的事物。 为什么应用程序的初始化需要是 UIResponder?也许我不明白 AppDelegate 的实例是做什么的。
【问题讨论】:
-
我想我现在明白了 AppDelegate 的作用:developer.apple.com/library/ios/documentation/UIKit/Reference/…。但是,我仍然不确定为什么 AppDelegate 继承自 UIResponder。
-
请注意,外部事件可以有多种类型,而不仅仅是物理交互。例如,响应后台模式(进入后台,在其他应用程序需要时停止音频等)正是
UIResponder应该管理的事情。按照委托模式,应用程序本身(我的意思是UIApplication)应该管理它,但它委托给适当的对象(应用程序委托)。 -
谢谢,@AlejandroIván。所以,让我澄清一下(缺乏适当的术语): UIResponder 跨越操作系统,而 UIApplication 特定于每个应用程序?如果我错了,请纠正我。
-
让我换一种说法:用户点击操作系统上的一个图标,它会实例化一个
UIApplication(您点击的应用程序)。UIApplication是一个需要做几件事的对象,包括响应输入。由于应用程序对象本身会做出不同的响应(取决于程序员希望它做什么),它会将工作“委托”给应用程序委托。当然,该委托需要遵循与应用程序本身通信的协议,因此它继承自UIResponder类,该类实现了大多数方法(并且您覆盖了特定应用程序的需求)。 -
我不确定官方来源(文档非常冗长,让每个人都感到困惑)。我建议你阅读这篇文章,它应该澄清:oleb.net/blog/2011/06/app-launch-sequence-ios
标签: ios appdelegate uiresponder