ios - name - ¿Por qué AppDelegate hereda de UIResponder?
viewport iphone (6)
Noté que al crear un nuevo proyecto con la plantilla Master-Detail de iPhone en Xcode 4.2 beta 4, lo hace:
// AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate>
¿Por qué AppDelegate
hereda de UIResponder
lugar de NSObject
?
ACTUALIZACIÓN: Mi respuesta a continuación podría estar equivocada. Acababa de ir por la imagen en la documentación de iOS. Pero, debe estar desactualizado.
A menos que haya algo nuevo en iOS 5 y aún no esté documentado, creo que este es un error tipográfico con esta plantilla de Xcode 4.2 beta 4. En una aplicación de iOS, el delegado de la aplicación debe subclasificar NSObject
, no UIResponder
, por ejemplo:
@interface AppDelegate : NSObject <UIApplicationDelegate>
AppDelegate hereda de UIResponder
que maneja los eventos de iOS. La clase UIResponder
define una interfaz para los objetos que responden y manejan eventos.
Compruebe la documentación de UIResponder
. Como AppDelegate puede responder a eventos táctiles, implementa la interfaz UIResponder
.
De la conversión a Storyboards Notas de la versión :
Nota: En las plantillas de Xcode actuales, la clase de delegado de aplicación se hereda de UIResponder. Esto es para que la instancia delegada pueda participar en la cadena de respondedores y así manejar las acciones a nivel de la aplicación. Si no ha utilizado este patrón en una aplicación existente, no es necesario adoptarlo para los guiones gráficos.
Supongo que es así que tiene acceso al administrador de deshacer global.
UIResponder
es la clase base para el marco UIKit. UIResponder
puede hacer frente a los eventos.
Su clase AppDelegate
es la clase delegada para la aplicación UIApplication
que crea UIApplicationMain
. AppDelegate
ajusta al protocolo UIApplicationDelegate
.
La clase UIResponder
tiene los métodos para obtener el foco de la ventana en la que se rellenarán todas las vistas, por lo que debe tener una clase que herede de UIResponder
para que la ventana sea clave.