假设有一个 GKTurnBasedMatch 只剩下 2 名尚未退出的参与者。
如果当前参与者想退出,而不是调用 participantQuitInTurnWithOutcome:...
调用 endMatchInTurnWithMatchData:...
是否正确,因为匹配不能不继续只有一个参与者?
但是如果其他参与者想退出,你不能调用 endMatchInTurnWithMatchData:...
因为还没有轮到你,所以你必须调用 participantQuitOutOfTurnWithOutcome:...
但是你只剩下一个参与者参加比赛。
处理这些情况的正确方法是什么?
最佳答案
您可以调用 –participantQuitOutOfTurnWithOutcome:withCompletionHandler:
然后 -(void)handleTurnEventForMatch:(GKTurnBasedMatch *)match didBecomeActive:(BOOL)didBecomeActive
从 GKTurnBasedEventHandlerDelegate
将为所有其他参与者调用。
在那里你可以为现在轮到的玩家调用 -(void)endMatchInTurnWithMatchData:(NSData *)matchData completionHandler:(void (^)(NSError *error))completionHandler
。
要确定谁离开了你的比赛,请检查 GKTurnBasedParticipant 的属性 matchOutcome - 它将是 GKTurnBasedMatchOutcomeQuit。
关于objective-c - 不按顺序结束 GKTurnBasedMatch 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13812322/