警告添加事件监听器回合基于IOS的游戏
这里是gamekithelper.m中的代码
- (void)authenticateLocalPlayer { //1 GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; //add a weak local player __weak GKLocalPlayer *blockLocalPlayer = localPlayer; if (localPlayer.isAuthenticated) { [[NSNotificationCenter defaultCenter] postNotificationName:LocalPlayerIsAuthenticated object:nil]; return; } //2 localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) { //3 [self setLastError:error]; if(viewController != nil) { //4 [self setAuthenticationViewController:viewController]; *******problem code************ // add event handler [blockLocalPlayer registerListener:self]; } else if([GKLocalPlayer localPlayer].isAuthenticated) { //5 _enableGameCenter = YES; [[NSNotificationCenter defaultCenter] postNotificationName:LocalPlayerIsAuthenticated object:nil]; *******problem code************ // add event handler [blockLocalPlayer registerListener:self]; } else { //6 _enableGameCenter = NO; } }; }
这里是gamekithelper.h中的@interface
@interface GameKitHelper : NSObject <GKTurnBasedMatchmakerViewControllerDelegate, GKTurnBasedEventListener>
这是警告
Sending 'GameKitHelper *const __strong' to parameter of incompatible type 'id<GKLocalPlayerListener>'
我觉得我正在犯一个容易解决的错误,但是我不知道它是什么,你们能帮助我吗?
额外的信息
- 我在spritekit中这样做
[blockLocalPlayer registerListener:self];
该方法接受符合协议GKLocalPlayerListener
的对象。 正如你在界面中看到的, GameKitHelper
没有声明它符合GKLocalPlayerListener
协议。
您应该通过更改这个来向GKLocalPlayerListener
添加一致性声明:
@interface GameKitHelper : NSObject <GKTurnBasedMatchmakerViewControllerDelegate, GKTurnBasedEventListener>
对此:
@interface GameKitHelper : NSObject <GKLocalPlayerListener, GKTurnBasedMatchmakerViewControllerDelegate, GKTurnBasedEventListener>