我注意到在 Xcode 4.2 beta 4 中使用 iPhone Master-Detail 模板创建新项目时,它会:
// AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate>
为什么AppDelegate
继承自UIResponder
而不是NSObject
?
我注意到在 Xcode 4.2 beta 4 中使用 iPhone Master-Detail 模板创建新项目时,它会:
// AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate>
为什么AppDelegate
继承自UIResponder
而不是NSObject
?
注意:在当前的 Xcode 模板中,应用程序委托类继承自 UIResponder。这样委托实例就可以参与响应者链,从而处理应用程序级别的操作。如果您尚未在现有应用程序中使用此模式,则无需将其用于情节提要。
检查UIResponder
. 由于 AppDelegate 可以响应触摸事件,所以它实现了UIResponder
接口。
UIResponder
是 UIKit 框架的基类。UIResponder
可以处理事件。
您的AppDelegate
类是创建的委托UIApplication
类UIApplicationMain
。AppDelegate
符合UIApplicationDelegate
协议。
该类UIResponder
具有获取应用程序窗口焦点的方法,所有视图都将在该窗口上填充,因此您应该有一个继承自的类,UIResponder
以便使窗口成为键。
我猜它是这样它可以访问全局撤消管理器。
AppDelegate 继承自UIResponder
处理 iOS 事件。该类UIResponder
为响应和处理事件的对象定义了一个接口。
更新:我下面的回答可能是错误的。我只是通过 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)中,应用程序委托是响应者链中的最后一个响应者。