Reputation: 126457
I noticed that when creating a new project with the iPhone Master-Detail template in Xcode 4.2 beta 4, it does:
// AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate>
Why does AppDelegate
inherit from UIResponder
instead of NSObject
?
Upvotes: 19
Views: 9687
Reputation: 20992
Check the documentation of UIResponder
. Since AppDelegate can respond to touch events, it implements the UIResponder
interface.
Upvotes: 3
Reputation: 5384
AppDelegate inherits from UIResponder
that handles iOS events. The UIResponder
class defines an interface for objects that respond to and handle events.
Upvotes: 1
Reputation: 75
UIResponder
is the base class for the UIKit framework. UIResponder
can deal with the events.
Your AppDelegate
class is the delegate class for the UIApplication
which UIApplicationMain
creates. AppDelegate
conforms to the UIApplicationDelegate
protocol.
The UIResponder
class has the methods to get the window of the application focus on which all the views will be populated, so you should have a class that inherits from UIResponder
in order to make the window as key.
Upvotes: 2
Reputation: 1369
From Converting to Storyboards Release Notes:
Note: In the current Xcode templates, the application delegate class inherits from UIResponder. This is so that the delegate instance can participate in the responder chain and so handle application-level actions. If you haven’t made use of this pattern in an existing application, there’s no need to adopt it for storyboards.
Upvotes: 14
Reputation: 126457
UPDATE: My answer below might be wrong. I was just going by the image in the iOS documentation. But, it must be outdated.
Unless there's something new in iOS 5 and not yet documented, then I think this is a typo with this Xcode 4.2 beta 4 template. In an iOS app, the app delegate should subclass NSObject
, not UIResponder
, e.g.:
@interface AppDelegate : NSObject <UIApplicationDelegate>
Upvotes: -4