Cocoa-Touch - путаница делегатов

Я только что начал новый проект с Xcode 4.2.1 и iOS5 SDK. Проект настраивается с помощью ARC. Я пытаюсь сделать AppDelegate делегатом для UITabBarController, выполнив [tabBarController setDelegate: self]; , если я это сделаю, я получаю предупреждающее сообщение:

warning: Semantic Issue: Sending 'AppDelegate *const __strong' to parameter of incompatible type 'id<UITabBarControllerDelegate>'

Хорошо, достаточно честно, я установил свой AppDelegate, чтобы соответствовать UITabBarControllerDelegate, выполнив

@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>

Отлично, предупреждение исчезнет.

Я получаю еще одну ошибку. В контроллере представления я хочу получить AppDelegate, поэтому я делаю следующее: AppDelegate * appDelegate = [[UIApplication sharedApplication] делегат]; , но это приведет к предупреждению:

warning: Semantic Issue: Initializing 'AppDelegate *__strong' with an expression of incompatible type 'id<UIApplicationDelegate>'

Но если я удалите, что мой AppDelegate соответствует протоколу UITabControllerDelegate, мое второе предупреждение исчезает.

Очень странное поведение, что дают эксперты по Какао?

27
задан Ilanchezhian 23 January 2013 в 09:16
поделиться