我注意到在使用Xcode 4.2 beta 4中的iPhone Master-Detail模板创建一个新项目时,它确实:
// AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate>
为什么AppDelegate
继承自UIResponder
而不是NSObject
?
答案 0 :(得分:12)
来自Converting to Storyboards Release Notes:
注意:在当前的Xcode模板中,应用程序委托类继承自UIResponder。这样,委托实例可以参与响应程序链,从而处理应用程序级操作。如果您尚未在现有应用程序中使用此模式,则无需将其用于故事板。
答案 1 :(得分:3)
查看UIResponder
的文档。由于AppDelegate可以响应触摸事件,因此它实现了UIResponder
接口。
答案 2 :(得分:2)
UIResponder
是UIKit框架的基类。 UIResponder
可以处理这些事件。
您的AppDelegate
课程是UIApplication
创建的UIApplicationMain
的委托课程。 AppDelegate
符合UIApplicationDelegate
协议。
UIResponder
类具有获取应用程序窗口的方法,所有窗口都将被填充,因此您应该有一个继承自UIResponder
的类以生成窗口作为关键。
答案 3 :(得分:1)
我猜它是可以访问全局撤消管理器。
答案 4 :(得分:1)
AppDelegate继承自处理iOS事件的UIResponder
。 UIResponder
类为响应和处理事件的对象定义了一个接口。
答案 5 :(得分:-4)
更新:我的回答可能有误。我只是按照iOS文档中的图像进行操作。但是,它必须过时。
除非iOS 5中有新的内容尚未记录,否则我认为这是一个使用此Xcode 4.2 beta 4模板的拼写错误。在iOS应用中,应用委托应该是NSObject
的子类,而不是UIResponder
,例如:
@interface AppDelegate : NSObject <UIApplicationDelegate>