objective c - Cocoa-Touch-Confusión del delegado
objective-c delegates (1)
Trate de hacer un encasillado antes de asignar la variable AppDelegate.
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
Y, mantenga la UITabControllerDelegate
.
Acabo de comenzar un nuevo proyecto que ejecuta Xcode 4.2.1 y iOS5 SDK. El proyecto se configura con ARC. Estoy tratando de establecer que AppDelegate sea el delegado para UITabBarController haciendo [tabBarController setDelegate:self];
si hago eso recibo un mensaje de advertencia que dice:
warning: Semantic Issue: Sending ''AppDelegate *const __strong'' to parameter of incompatible type ''id<UITabBarControllerDelegate>''
De acuerdo, lo suficiente, configuré mi AppDelegate para que se ajuste a la UITabBarControllerDelegate haciendo
@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>
Genial, la advertencia desaparece.
Ahora me sale otro error. En un controlador de vista quiero obtener una retención de AppDelegate, así que hago esto: AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
pero esto hará una advertencia diciendo:
warning: Semantic Issue: Initializing ''AppDelegate *__strong'' with an expression of incompatible type ''id<UIApplicationDelegate>''
Pero si elimino que mi AppDelegate cumple con el protocolo UITabControllerDelegate, mi segunda advertencia desaparecerá.
Muy extraño comportamiento, ¿qué da a los expertos en cacao?