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

时间:2013-07-10 05:36:05

标签: iphone ios objective-c

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

这是什么意思?为什么会出现这种警告?

我已经在.m

宣布了
AppDelegate *appdev;

并在viewDidLoad

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

我想要隐藏此警告。我该怎么办?提前谢谢。

4 个答案:

答案 0 :(得分:83)

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

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

因为这可能会出现在Swift中

 let app = UIApplication.shared.delegate as! AppDelegate

答案 1 :(得分:7)

如果您希望导入 AppDelegate 任何地方。很简单。

IN 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];

答案 2 :(得分:3)

您可以输入它以防止出现警告信息。

尝试:

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

答案 3 :(得分:1)

您需要输入强制转换,因为它会返回Protocol。

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