3

我正在尝试实现一个基于回合的应用程序,发送回合数据没有问题,但我看不到自动接收数据的方法。到目前为止,我发现了这么多:

  • 有一个GKTurnBasedEventHandlerDelegate-协议。这很容易实现,但是我在哪里将该对象设置为任何它必须是委托的委托?它似乎不是GKTurnBasedMatch, or GKTurnBasedMatchmakerViewController, or的代表GKMatchMaker

  • 还有一种方法GKTurnBasedMatch被称为loadMatchDataWithCompletionhandler,但据我了解,它只在您有点直觉需要更新匹配时才调用一次。我怎么知道它必须更新?我必须每隔一秒左右触发一次这个功能吗?

提前致谢。

更新:我已设置[GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate为实现GKTurnBasedEventHandlerDelegate. 它仍然永远不会被调用。

4

1 回答 1

3

您使用以下语句设置它,它成为共享实例的委托:

[[GKTurnBasedEventHandler sharedTurnBasedEventHandler] setDelegate:self];

loadMatchDataWithCompletionhandler您实际上不需要手动调用,当其中一个参与者调用endTurnWithMatchData所有其他参与者时,将通过GKTurnBasedEventHandler委托方法通知:

-(void) handleTurnEventForMatch:(GKTurnBasedMatch *)match didBecomeActive:(BOOL)didBecomeActive

这就是您需要更新 UI 的地方。请注意,模拟器不支持GKTurnBasedEventHandler 委托方法,它们只能在实际设备中调用。

于 2013-04-11T21:21:31.940 回答