18

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

// AppDelegate.h

@interface AppDelegate : UIResponder <UIApplicationDelegate>

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

4

6 回答 6

14

转换到 Storyboards 发行说明

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

于 2013-07-24T03:52:28.090 回答
3

检查UIResponder. 由于 AppDelegate 可以响应触摸事件,所以它实现了UIResponder接口。

于 2011-08-01T00:19:45.793 回答
2

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

您的AppDelegate类是创建的委托UIApplicationUIApplicationMainAppDelegate符合UIApplicationDelegate协议。

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

于 2013-07-24T03:41:11.537 回答
1

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

于 2012-01-11T11:16:03.337 回答
1

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

于 2013-07-24T07:20:46.160 回答
-4

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

除非 iOS 5 中有新内容且尚未记录,否则我认为这是此 Xcode 4.2 beta 4 模板的错字。在 iOS 应用程序中,应用程序委托应该是子类NSObject,而不是子类UIResponder,例如:

@interface AppDelegate : NSObject <UIApplicationDelegate>

对于iOS 应用程序,在 UIKit(对于 Cocoa Touch,例如 iPhone 和 iPad)中,UIApplication是响应者链中的最后一个响应者

对于Mac OS X 应用程序,在 Application Kit(对于 Cocoa,例如 Mac)中,应用程序委托是响应者链中的最后一个响应者

于 2011-08-01T01:29:46.423 回答