我有一个委托方法永远不会被调用,为什么



这是不会被调用的委托方法。我试了所有方法,但不知道什么原因,它始终没有被调用。我试图使一个多人游戏使用游戏中心在Swift。我在我的multiplayernetwork .swift文件中有一个函数,我必须在GameScene.swift中的委托函数中调用它。有人能帮帮我吗?谢谢!

//GameScene.swift
/* For protocol GKMatchDelegate */
func match(match: GKMatch, didReceiveData data: NSData, fromRemotePlayer playerID: GKPlayer) {
    println("calllittttttt")
    if _match != match {
        return

    }

    MultiplayerNetworking().match(match, didReceiveData: data, fromRemotPlayer: playerID)
}

//MultiplayerNetworking.Swift
   func match(match:GKMatch, didReceiveData data: NSData!, fromRemotPlayer playerID: GKPlayer) {


    let message = UnsafePointer<Message>(data.bytes).memory
    if(message.messageType == MessageType.kMessageTypeRandomNumber) {
        let messageRandomNumber = UnsafePointer<MessageRandomNumber>(data.bytes).memory
        println("Received random number: (messageRandomNumber.randomNumber)")
        var tie = false
        if(messageRandomNumber.randomNumber == _ourRandomNumber) {
            println("Tie")
            tie = true
            _ourRandomNumber = arc4random()
            self.sendRandomNumber()
        }
        else {
            var dictionary = ["(playerIDKey)":"(playerID)", "(randomNumberKey)":"(messageRandomNumber.randomNumber)"]
            self.processReceivedRandomNumber(dictionary)
        }
        if(_receivedAllRandomNumbers) {
            _isPlayer1 = self.isLocalPlayerPlayer1()
        }
        if(!tie && _receivedAllRandomNumbers) {
            if(_gameState == GameState.kGameStateWaitingForRandomNumber) {
                _gameState = GameState.kGameStateWaitingForStart
            }
            self.tryStartGame()
        }
    }
    else if(message.messageType == MessageType.kMessageTypeGameBegin) {
        println("Begin game message received")
        _gameState = GameState.kGameStateActive
        self.delegate?.setCurrentPlayerIndex(self.indexForLocalPlayer())
    }
    else if(message.messageType == MessageType.kMessageTypeMove) {
        println("Move message received")
        let messageMove = UnsafePointer<MessageMove>(data.bytes).memory
        self.delegate?.movePlayerAtIndex(indexForPlayerWithId(playerIDKey))
    }
    else if(message.messageType == MessageType.kMessageTypeGameOver) {
        println("Game over message received")
        let messageGameOver = UnsafePointer<MessageGameOver>(data.bytes).memory
        self.delegate?.gameOver(messageGameOver.player1Won)
    }
}

你的委托很可能是nil。

相关内容

最新更新