objective-c cocoa-touch delegates automatic-ref-counting uiapplicationdelegate

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?