2017-12-13 2 views
0

작은 회전 기반 iOS 앱을 온라인 게임으로 구현하고 있습니다. "GKSavedGameListener"프로토콜을 구현하는 데 문제가 있습니다. 왜냐하면 객체를 리스너로 등록하는 방법이나 대리자로 객체를 등록하는 방법을 모르기 때문입니다.GKSavedGameListener 프로토콜을 사용하는 방법은 무엇입니까?

"GKLocalPlayerListener"와 비슷한 문제가 있었지만 GKLocalPlayer에서 "registerListener :"를 통해 등록 할 수있었습니다. 이런 종류의 사과에 대한 설명서가 부족합니다. 불행히도 "GKSavedGameListener"는 구현하기 쉽지 않습니다.

GKLocalPlayer는 "GKSavedGameListener"를 준수하지만 프로토콜에서 선택적 기능을 구현하지 않는 것 같습니다 (적어도 GKLocalPlayer.h에는 표시되지 않습니다).

저는 "player : didModifySavedGame :"에 특히 관심이 있습니다.

"GKSavedGameListener"프로토콜 함수에서 사용자 지정 동작을 구현할 수 있습니까?

답변

1

안내문에 따라 https://developer.apple.com/documentation/gamekit/gklocalplayerlistener?changes=_7&language=objc, GKLocalPlayerListener은 다른 것들 중에서도 GKSavedGameListener을 상속합니다. GKLocalPlayerListener을 구현하기 만하면 네 개 모두에 대한 메시지가 표시됩니다.

등록 후, 클래스가 그받을 수 있도록 GKLocalPlayerListener을 준수하기 위해 클래스를 구성합니다

@interface MyGameKitHelperClass : UIViewController 
< 
    GKLocalPlayerListener 
> 

당신은 당신의 클래스가 해당 메시지를 수신 할 때 호출되는 클래스의 기능을 구현할 수 있습니다.

-(void)player:(GKPlayer *)player didModifySavedGame:(GKSavedGame *)savedGame 
{ 

} 


-(void)player:(GKPlayer *)player hasConflictingSavedGames:(NSArray *)savedGames 
{ 

} 

// or whichever functions you're interested in. 
+0

고마워요! 나는 테스트를 해보고 작동하도록 만들었지 만 신뢰할 수 없다는 것을 알았습니다. 그래서 폴링 기능을 구현하여 턴이 언제 움직 였는지 판단합니다. 많은 사람들이이 프로토콜에 문제가있는 것처럼 보입니다. [이 주제에 관한 다른 질문] (https://stackoverflow.com/questions/47645092/how-is-gkturnbasedmatchmaker-used/47852400#47852400) –

관련 문제