我正在尝试实现基于回合制的应用,发送转弯数据没有问题,但我看不到自动接收数据的方法。到目前为止,我发现了很多:
有一个GKTurnBasedEventHandlerDelegate
- 协议。它很容易实现,但是我在哪里将该对象设置为委托的委托?它似乎不是GKTurnBasedMatch
,GKTurnBasedMatchmakerViewController
或GKMatchMaker
的代表。
还有一种GKTurnBasedMatch
的方法叫做loadMatchDataWithCompletionhandler
,但据我所知,只有当你有一种直觉感觉匹配需要时它才被调用一次要被更新。我怎么知道它必须更新?我是否需要每隔一秒左右触发此功能?
提前致谢。
更新:我已将[GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate
设置为实现GKTurnBasedEventHandlerDelegate
的静态实例。它仍然永远不会被召唤。
答案 0 :(得分:3)
您可以使用以下语句设置它,它将成为共享实例的委托:
[[GKTurnBasedEventHandler sharedTurnBasedEventHandler] setDelegate:self];
您无需亲自手动拨打loadMatchDataWithCompletionhandler
,当其中一位与会者致电endTurnWithMatchData
时,所有其他与会者将通过GKTurnBasedEventHandler
委托方式通知:
-(void) handleTurnEventForMatch:(GKTurnBasedMatch *)match didBecomeActive:(BOOL)didBecomeActive
这就是您需要更新UI的地方。请注意,模拟器不支持GKTurnBasedEventHandler
委托方法,它们只能在实际设备中调用。