从不兼容类型'id <UIApplicationDelegate>'分配给'AppDelegate*'

Gaj*_*han 30 iphone objective-c ios

在我的项目中,它表示从不兼容的类型'id'分配给'AppDelegate*'.

究竟是什么?为什么会出现此警告?

我已经在.m宣布了

AppDelegate *appdev;
Run Code Online (Sandbox Code Playgroud)

并在viewDidLoad中

{
    appdev = [[UIApplication sharedApplication]delegate];     <= warning here
}
Run Code Online (Sandbox Code Playgroud)

我想隐藏这个警告.我该怎么办?提前致谢.

Dai*_*jan 84

因为你知道它们相等,所以添加一个强制转换让编译器知道

 AppDelegate* app = (AppDelegate*)[[UIApplication sharedApplication]delegate];
Run Code Online (Sandbox Code Playgroud)

因为这也可能出现在Swift中

 let app = UIApplication.shared.delegate as! AppDelegate
Run Code Online (Sandbox Code Playgroud)


Yan*_*eph 7

如果你想要在任何地方导入 AppDelegate .很简单.

在APPDELEGATE

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

在你的课堂上任何地方

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

AppDelegate *app = [AppDelegate app];
Run Code Online (Sandbox Code Playgroud)