Pregunta

Acabo de comenzar un nuevo proyecto que ejecuta Xcode 4.2.1 e iOS5 SDK. El proyecto está configurado con ARC. Estoy tratando de establecer el AppDelegate para que sea el delegado de 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>'

Muy bien justo, configuré mi appdelegate para que se ajuste al uitabBarControllerDelegate haciendo

@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>

Genial, la advertencia desaparece.

Ahora recibo otro error. En un controlador de vista, quiero obtener el control del 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 se ajusta al protocolo UITABControllerDelegate, mi segunda advertencia desaparece.

Comportamiento muy extraño, ¿qué les da a los expertos en cacao?

¿Fue útil?

Solución

Intente hacer un Typecast antes de asignar la variable AppDelegate.

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

Y, mantenga el UITabControllerDelegate.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top