使用swift在SKView上使用EXC_BAD_ACCESS代码= 2

时间:2014-08-14 01:34:06

标签: swift sprite-kit exc-bad-access

我试图将使用目标C制作的游戏移植到swift。我已经初始化了一个场景,但每当我将视图控制器的视图对象分配给SKView常量时,我​​都会遇到错误的访问错误。

导致错误的行如下:

let skView = self.view as SKView

这里有一些上下文代码:

 override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        // Configure the view.

        /* Pick a size for the scene */
        let scene = GameplayScene(size: self.view.bounds.size, colored: false)
        // Configure the view.
        println("view: \(self.view.description)")
        let skView: SKView = self.view as SKView
        skView.showsFPS = true
        skView.showsNodeCount = true

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill

        skView.presentScene(scene)
    }

当我打印视图对象时,我在控制台中获取信息(内存地址等)。我已经尝试将此代码放在不同的方法中,例如viewDidLoad等,但每次都是相同的结果。我在我的计划中启用了僵尸,但没有找到任何东西(从我能说的,没有真正发生过)。我的游戏是风景游戏,如果它有所作为。任何人都知道可能导致这个麻烦错误的原因是什么?我已经设置了多个断点,场景初始化正常,println被调用,然后在视图设置时正确崩溃

1 个答案:

答案 0 :(得分:0)

在发布这个问题后大约2分钟就知道了。在我的测试项目中记录视图后,我注意到它甚至在self.view之前已经是SKView类型的SKView线。所以我检查了viewController中的视图,确定它的类是SKView。

将我的实际游戏视图控制器中的视图从UIView更改为SKView后,它运行正常。这是一个简单的修复,但很难调试。