Подтвердить что ты не робот

Присвоение 'AppDelegate *' из несовместимого типа 'id <UIApplicationDelegate>'

В моем проекте сказано Назначение 'AppDelegate *' из несовместимого типа 'id'.

Что это такое? Почему произошло это предупреждение?

Я объявил в .m

AppDelegate *appdev;

и в viewDidLoad

{
    appdev = [[UIApplication sharedApplication]delegate];     <= warning here
}

Я хочу скрыть это предупреждение. Что мне делать? Спасибо заранее.

4b9b3361

Ответ 1

поскольку вы знаете, что они равны, добавьте бросок, чтобы компилятор знал

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

так как это тоже может появиться в Swift

 let app = UIApplication.shared.delegate as! AppDelegate

Ответ 2

Если вы хотите, чтобы это было для импорта AppDelegate в любом месте. Прост.

В APPDELEGATE

/**
 *  Get AppDelegate
 *  Call [AppDelegate getAppDelegate]
 *
 *  @return AppDelegate
 */
+ (AppDelegate *) app {
    return (AppDelegate *)[[UIApplication sharedApplication] delegate];
}

ВЕЗДЕ В ВАШЕМ КЛАССЕ

#import "AppDelegate.h" // TOP OF YOUR CLASS

AppDelegate *app = [AppDelegate app];

Ответ 3

Вы можете ввести его, чтобы предотвратить предупреждение.

попробовать:

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

Ответ 4

Вам нужно ввести cast, потому что он возвращает протокол.

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