Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios EXC_错误_指令错误_Ios_Swift_Sprite Kit_Exc Bad Instruction - Fatal编程技术网

Ios EXC_错误_指令错误

Ios EXC_错误_指令错误,ios,swift,sprite-kit,exc-bad-instruction,Ios,Swift,Sprite Kit,Exc Bad Instruction,我在Xcode 6中多次遇到这个问题。问题是,我有一个球跑动,当他击中一个街区,他死了。不过他会跳。但是第一个街区总是撞车。如果我只是正常地滚动,而不是在空中,然后撞到第一个挡块,它就会冻结并关闭 它给了我这个错误: 线程1:EXC_BAD_指令(代码=EXC_1386_INVOP,子代码=0x0) 第2行和第7行具有绿色背景(计算空间) 这是错误行: func didBeginContact(contact:SKPhysicsContact) { died() } func died

我在Xcode 6中多次遇到这个问题。问题是,我有一个球跑动,当他击中一个街区,他死了。不过他会跳。但是第一个街区总是撞车。如果我只是正常地滚动,而不是在空中,然后撞到第一个挡块,它就会冻结并关闭

它给了我这个错误:

线程1:EXC_BAD_指令(代码=EXC_1386_INVOP,子代码=0x0)

第2行和第7行具有绿色背景(计算空间)

这是错误行:

func didBeginContact(contact:SKPhysicsContact) {
    died()
}

func died() {
    if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene { 
        let skView = self.view as SKView                                                                
        skView.ignoresSiblingOrder = true
        scene.size = skView.bounds.size
        scene.scaleMode = .AspectFill
        skView.presentScene(scene)
    }
}

EXC_BAD_指令意味着代码中的某个地方有一个断言。您提供的唯一一行可以抛出断言的代码是:

let skView = self.view as SKView
如果self.view无法强制转换为SKView,它将断言。似乎self.view实际上不是一个SKView

可以肯定的是,您可以像处理场景一样执行可选的演员阵容:

if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
    if let skView = self.view as? SKView {                                                          
        skView.ignoresSiblingOrder = true
        scene.size = skView.bounds.size
        scene.scaleMode = .AspectFill
        skView.presentScene(scene)
    }
}

我相信我已经找到了解决你问题的办法

将skView=self.view更改为skView

if let skView = self.view as SKView!

应该工作

Idon@zneak,我认为错误的部分是“抛出a”,我仍然习惯于例外:)。我将其更新为只说“它将断言”@zneak-See@zneak我认为“断言”是正确的:框架断言故意向处理器抛出错误指令以引发异常。然后我遇到了这个问题:来自“SKView”的条件向下广播“SKView”总是成功的。我还不是一个很好的Xcode编码员,但这正是我尝试的结果。请帮我除掉这个虫子,因为我真的不喜欢它。
if let skView = self.view as? SKView! {                                                          
    skView.ignoresSiblingOrder = true
    scene.size = skView.bounds.size
    scene.scaleMode = .AspectFill
    skView.presentScene(scene)
}