2015-08-12 5 views
3

здесь код в 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; 
     } 
    }; 

} 

здесь является @interface в gamekithelper.h

@interface GameKitHelper : NSObject <GKTurnBasedMatchmakerViewControllerDelegate, GKTurnBasedEventListener> 

здесь предупреждение

Sending 'GameKitHelper *const __strong' to parameter of incompatible type 'id<GKLocalPlayerListener>' 

Я чувствую, что делаю легко фиксируемую ошибку, но я не могу понять, что это такое, может ли кто-нибудь из вас помочь мне ?

Экстра Информация

  • Я делаю это в spritekit

ответ

3
[blockLocalPlayer registerListener:self]; 

Этот метод принимает объект, который соответствует протоколу GKLocalPlayerListener. Как вы можете видеть в своем интерфейсе, GameKitHelper не указывает, что он соответствует протоколу GKLocalPlayerListener.

Вы должны добавить декларацию соответствия GKLocalPlayerListener путем изменения этого:

@interface GameKitHelper : NSObject <GKTurnBasedMatchmakerViewControllerDelegate, GKTurnBasedEventListener> 

к этому:

@interface GameKitHelper : NSObject <GKLocalPlayerListener, GKTurnBasedMatchmakerViewControllerDelegate, GKTurnBasedEventListener> 
+0

Спасибо так много. Это фиксировало это – Sooc

Смежные вопросы