'永远不会被执行'

时间:2016-04-20 02:13:20

标签: ios swift if-statement sktransition

我不知道为什么代码中出现此错误:

    func torpedoDidCollideWithAlien(torpedo:SKSpriteNode, alien:SKSpriteNode){
        print("HIT")
        torpedo.removeFromParent()
        alien.removeFromParent()

        var aliensDestroyed = 0
        aliensDestroyed += 1

        if (aliensDestroyed > 10){ //Transition to GameOver or Success
            let transition:SKTransition = SKTransition.flipHorizontalWithDuration(0.5)
                let gameOverScene:SKScene = GameOverScene(size: self.size, won: true)
                self.view?.presentScene(gameOverScene, transition: transition)
            }

错误出现在以下行:

let transition:SKTransition = SKTransition.flipHorizontalWithDuration(0.5) //'Will never be executed'

2 个答案:

答案 0 :(得分:4)

您声明一个名为aliensDestroyed的新变量,其值为0。然后,将值增加到1

然后检查该值是否大于10.这不可能是真的。它始终是1

因此if语句的内容永远不会执行。

您可能需要的是名为aliensDestroyed的实例变量,而不是在torpedoDidCollideWithAlien函数中创建新的局部变量。

答案 1 :(得分:0)

这不是错误,这是一个警告。编译器已对您的代码进行了分析,并告诉您编写if语句的方式永远不会成立,因此大括号内的语句永远不会被执行。

rmaddy在他的回答中解释了为什么。