Присвоение 'AppDelegate *' из несовместимого типа 'id <UIApplicationDelegate>'
В моем проекте сказано Назначение 'AppDelegate *' из несовместимого типа 'id'.
Что это такое? Почему произошло это предупреждение?
Я объявил в .m
AppDelegate *appdev;
и в viewDidLoad
{
appdev = [[UIApplication sharedApplication]delegate]; <= warning here
}
Я хочу скрыть это предупреждение. Что мне делать? Спасибо заранее.
Ответы
Ответ 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];