为什么以下代码只有在我在其他地方设置断点后才会被触发,然后恢复?

时间:2013-11-18 12:39:24

标签: ios objective-c xcode game-center gamekit

我使用游戏套件创建了一个实时多人游戏。创建匹配等在两个设备上正常进行。然后if块:if (!self.matchStarted && match.expectedPlayerCount == 0)永远不会被触发,除非我在SKScene的更新方法中放置一个断点。在游戏开始运行时,我设置了一个断点。一旦调试器中断,我就“继续”(^ + CMD + Y)。 if块中的代码立即被触发。

 -(void)match:(GKMatch *)match player:(NSString *)playerID didChangeState:(GKPlayerConnectionState)state
    { 
        switch (state)
        {
            case GKPlayerStateConnected:
                // Handle a new player connection.
                break;
            case GKPlayerStateDisconnected:
                // A player just disconnected.
                break;
        }

        //TODO We have to keep track of whether a match has started or not.
        if (!self.matchStarted && match.expectedPlayerCount == 0)
        {
            self.matchStarted = YES;
            self.gameState = _proposingBestHostState;
        }        
    }

我的SKScene update:方法实际上是一个NOP,因为它调用self.gameState上的方法,该方法在if块中设置之前为零。

self.matchStarted是具有以下属性的属性:

@property (nonatomic)bool matchStarted;

0 个答案:

没有答案