从不兼容的类型 'AppDelegate *const __strong' 分配给 'NSObject<PushNotificationDelegate> *'
Assigning to 'NSObject<PushNotificationDelegate> *' from incompatible type 'AppDelegate *const __strong'
我正在尝试将 Pushwoosh 实施到我的游戏中,这是非常简单的指南,但我 运行 在这里解决这个问题:
您的 AppDelegate 实现应如下所示:
@implementation AppDelegate <PushNotificationDelegate>
第 20 行。
这意味着您的 AppDelegate 符合 PushNotificationDelegate
协议。
对于我的情况,我需要符合头文件中的协议以消除警告。我不知道我在做什么。
#import <UIKit/UIKit.h>
#import "BaseAppDelegate.h"
#import <Pushwoosh/PushNotificationManager.h>
@interface ChildAppDelegate : BaseAppDelegate <UIApplicationDelegate, PushNotificationDelegate>
@end
阅读协议。基本上,协议是 and/or 属性的方法列表,object 必须(或者可能,在 @optional
属性的情况下)具有。您将该错误消息中的 NSObject<PushNotificationDelegate>
读为 "any NSObject subclass that declares that it implements the methods in the PushNotificationDelegate
protocol"。
为了声明你的 class 符合协议,你在 <
和 >
之间写下协议的名称 @interface
或 @implementation
行。
编译器分别读取每个源文件,并从该源文件中 header 为您 #import
(如果您想了解更多信息,请继续阅读 "compilation units")。因此,如果您在 .m
文件中写入 <PushNotificationDelegate>
位,则只有 .m
文件中的代码知道它,因为其他 .m
文件只能看到您在 header.
在你的情况下,AppDelegate.m
源文件 应该 看到,但也许你有另一个源文件,你在其中设置了相同类型的委托,只包括AppDelegate
的 header 因此看不到它?
无论如何,如果您使用这些知识阅读此错误消息,您会看到 PushNotificationManager.delegate
被声明为 NSObject<PushNotificationDelegate>
,这就是您的 AppDelegate
必须是的能够将其分配给 属性。并且错误正确地说 AppDelegate
可能是 NSObject
,但不是 PushNotificationDelegate
.
声明您的 class 符合协议的好处是,如果您忘记实现所需的方法,编译器将打印一条错误消息。
我正在尝试将 Pushwoosh 实施到我的游戏中,这是非常简单的指南,但我 运行 在这里解决这个问题:
您的 AppDelegate 实现应如下所示:
@implementation AppDelegate <PushNotificationDelegate>
第 20 行。
这意味着您的 AppDelegate 符合 PushNotificationDelegate
协议。
对于我的情况,我需要符合头文件中的协议以消除警告。我不知道我在做什么。
#import <UIKit/UIKit.h>
#import "BaseAppDelegate.h"
#import <Pushwoosh/PushNotificationManager.h>
@interface ChildAppDelegate : BaseAppDelegate <UIApplicationDelegate, PushNotificationDelegate>
@end
阅读协议。基本上,协议是 and/or 属性的方法列表,object 必须(或者可能,在 @optional
属性的情况下)具有。您将该错误消息中的 NSObject<PushNotificationDelegate>
读为 "any NSObject subclass that declares that it implements the methods in the PushNotificationDelegate
protocol"。
为了声明你的 class 符合协议,你在 <
和 >
之间写下协议的名称 @interface
或 @implementation
行。
编译器分别读取每个源文件,并从该源文件中 header 为您 #import
(如果您想了解更多信息,请继续阅读 "compilation units")。因此,如果您在 .m
文件中写入 <PushNotificationDelegate>
位,则只有 .m
文件中的代码知道它,因为其他 .m
文件只能看到您在 header.
在你的情况下,AppDelegate.m
源文件 应该 看到,但也许你有另一个源文件,你在其中设置了相同类型的委托,只包括AppDelegate
的 header 因此看不到它?
无论如何,如果您使用这些知识阅读此错误消息,您会看到 PushNotificationManager.delegate
被声明为 NSObject<PushNotificationDelegate>
,这就是您的 AppDelegate
必须是的能够将其分配给 属性。并且错误正确地说 AppDelegate
可能是 NSObject
,但不是 PushNotificationDelegate
.
声明您的 class 符合协议的好处是,如果您忘记实现所需的方法,编译器将打印一条错误消息。