由于未捕获的异常终止应用程序' NSGenericException',原因:' ***集合< __ NSArrayM:0x156b9090>在被列举时被突变。'

时间:2015-07-06 05:20:18

标签: swift sprite-kit synchronization

我目前正在SpriteKit中使用Swift制作一个小型/基本的迷你游戏,并且我遇到了上面标题中显示的错误... 大多数时候,一切都运行良好,但每隔一段时间,我就会收到这个错误(大多数时候它都会发生,当游戏超过下面的时,它会正确所谓的)。该错误始终指向以下行:

func handle_tilt(acceleration_data: CGFloat)
{
    if ((childNodeWithName("hero")) != nil){
    childNodeWithName("hero")?.physicsBody?.applyForce(CGVectorMake(acceleration_data * 50, 0))
    }
}

我该如何解决这个问题? **下面设置的加速度计代码包含在

if motionManager.accelerometerAvailable == true {
    self.motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue()) {
        (data, error) in
        if (data.acceleration.y != 0) {
            self.motionManager.accelerometerActive == true
            self.handle_tilt(CGFloat(data.acceleration.y))
        }
    }
}

调用时触发错误的函数......

func game_over()
{

    self.removeActionForKey("spawn_flying_squirrels")
    self.removeActionForKey("spawn_flying_squirrels")
    println("Removed the actions")

    self.motionManager.stopAccelerometerUpdates()
    println("removed motion manager")
    if let recognizers = self.view?.gestureRecognizers {
        for recognizer in recognizers {
            self.view!.removeGestureRecognizer(recognizer as! UIGestureRecognizer)
        }
    }

    println("removed the gesture recognizers")

    //saves the score or doesn't (if it doesn't make the high score
    saveScore(score)

    for child in self.children as! [SKNode]
    {
        removeChildrenInArray([child])
    }
    println("removed the children")

    let scene = GameScene(size: self.size)
    scene.scaleMode = .AspectFill
    NSLog("HE DEAD")


    view?.presentScene(scene)
}

我认为发生的事情是game_over功能会删除"英雄" node,然后handle_tilt函数尝试访问" hero"导致崩溃。我试图用handle_tilt函数中的if语句来阻止它,但它并没有像我希望的那样取得全部成功...

0 个答案:

没有答案