从不兼容类型'AppDelegate * const __strong'分配给'NSObject <pushnotificationdelegate> *'

时间:2018-08-08 00:19:47

标签: ios objective-c xcode push-notification pushwoosh

我正在尝试将Pushwoosh引入其游戏中,该指南非常简单,但是我在这里遇到了这个问题:

enter image description here

3 个答案:

答案 0 :(得分:3)

您的AppDelegate实现应如下所示:

@implementation AppDelegate <PushNotificationDelegate>

第20行。

这意味着您的AppDelegate符合PushNotificationDelegate协议。

答案 1 :(得分:0)

对于我来说,我需要遵循头文件中的协议以使警告静音。我不知道我在做什么。

#import <UIKit/UIKit.h>
#import "BaseAppDelegate.h"
#import <Pushwoosh/PushNotificationManager.h>

@interface ChildAppDelegate : BaseAppDelegate <UIApplicationDelegate, PushNotificationDelegate>

@end

答案 2 :(得分:0)

阅读协议。基本上,协议是对象必须(或在@optional属性的情况下可能具有)必须具有的方法和/或属性的列表。您在该错误消息中将NSObject<PushNotificationDelegate>读为“任何声明其实现了PushNotificationDelegate协议中的方法的NSObject子类”。

要声明您的类符合某个协议,请在<或{{ 1}}行。

编译器分别读取每个源文件,以及您从该源文件>读取的所有标头(如果您想了解更多,请在“编译单元”上阅读)。因此,如果您在@interface文件中写入@implementation位,则只有#import文件中的代码知道这一点,因为其他<PushNotificationDelegate>文件只看到您在标头中写的内容

在您的情况下,.m源文件应该看到了,但是也许您有另一个源文件,在其中您设置了相同类型的委托,只包含{{ 1}},因此看不到它?

无论如何,如果您以这种知识阅读此错误消息,您会看到.m被声明为.m,这就是您的AppDelegate.m必须能够做到的将其分配给该属性。错误正确地表明AppDelegate可能是PushNotificationManager.delegate,而不是NSObject<PushNotificationDelegate>

声明您的类符合协议的优点是,如果您忘记实现必需的方法,则编译器将打印一条错误消息。