【问题标题】:Why does AppDelegate inherit from UIResponder?为什么 AppDelegate 继承自 UIResponder?
【发布时间】:2011-08-01 00:16:51
【问题描述】:

我注意到,在 Xcode 4.2 beta 4 中使用 iPhone Master-Detail 模板创建新项目时,它会:

// AppDelegate.h

@interface AppDelegate : UIResponder <UIApplicationDelegate>

为什么AppDelegate 继承自UIResponder 而不是NSObject

【问题讨论】:

  • 如果让你猜,你会说什么?
  • 你可能是对的,我不想对仍在保密协议下的事情发表太多评论,但这不是我的猜测。
  • 它的一个用途是继续处理通过facebook或其他应用程序登录返回的url,即。需要在应用内进行身份验证。

标签: ios uiresponder


【解决方案1】:

来自Converting to Storyboards Release Notes

注意:在当前的 Xcode 模板中,应用程序委托类继承自 UIResponder。这是为了让委托实例可以参与响应者链,从而处理应用程序级别的操作。如果您尚未在现有应用程序中使用此模式,则无需将其用于情节提要。

【讨论】:

    【解决方案2】:

    查看UIResponder 的文档。由于 AppDelegate 可以响应触摸事件,所以它实现了UIResponder 接口。

    【讨论】:

      【解决方案3】:

      UIResponder 是 UIKit 框架的基类。 UIResponder 可以处理事件。

      您的 AppDelegate 类是 UIApplication 的委托类,由 UIApplicationMain 创建。 AppDelegate 符合UIApplicationDelegate 协议。

      UIResponder 类具有获取应用程序窗口焦点的方法,所有视图都将在该窗口上填充,因此您应该有一个继承自 UIResponder 的类,以便使窗口成为键。

      【讨论】:

        【解决方案4】:

        我猜是因为它可以访问全局撤消管理器。

        【讨论】:

          【解决方案5】:

          AppDelegate 继承自处理 iOS 事件的UIResponderUIResponder 类为响应和处理事件的对象定义了一个接口。

          【讨论】:

            【解决方案6】:

            更新:我下面的回答可能是错误的。我只是通过 iOS 文档中的图像。但是,它一定已经过时了。

            除非 iOS 5 中有新的东西并且还没有记录,否则我认为这是这个 Xcode 4.2 beta 4 模板的错字。在 iOS 应用程序中,应用程序委托应继承 NSObject,而不是 UIResponder,例如:

            @interface AppDelegate : NSObject <UIApplicationDelegate>
            

            对于iOS apps, in UIKit (for Cocoa Touch, e.g., iPhone & iPad), UIApplication is the last responder in the responder chain

            对于Mac OS X apps, in the Application Kit (for Cocoa, e.g., Mac), the app delegate is the last responder in the responder chain

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-04-07
              • 2018-03-12
              • 2023-03-11
              • 2010-09-18
              • 2013-11-02
              • 2010-10-04
              相关资源
              最近更新 更多