当我在 iPad 上运行时,我的游戏一直在说“EXC_BAD_ACCESS(code=1, address=0xb176e978)”
Posted
技术标签:
【中文标题】当我在 iPad 上运行时,我的游戏一直在说“EXC_BAD_ACCESS(code=1, address=0xb176e978)”【英文标题】:My game keeps crashing saying " EXC_BAD_ACCESS(code=1, address=0xb176e978) " when I run on my iPad 【发布时间】:2015-05-01 17:06:37 【问题描述】:我正在开发适用于 ios 的应用程序,但遇到了问题。每次我在装有 iOS 7.1 的 iPad 上运行应用程序时,当场景更改指向不同的 SKSpriteNodes 并出现错误 EXC_BAD_ACCESS(code=1, address=0xb176e978) 时,应用程序会随机崩溃。我设置精灵节点的方式是这样写:
var X = SKSPriteNode(imageNamed:"picture.png")
整个游戏都是用 swift 在 Xcode 上编写的。
编辑:我注意到 address=0xb176e978 不是恒定的。它有时会显示不同的地址=''。
场景转换代码
var gameScene = EndScene(size: self.size)
gameScene.gameScene = self
gameScene.score = score
gameScene.highscore = highscore
var transition = SKTransition.doorsCloseHorizontalWithDuration(0.5)
gameScene.scaleMode = SKSceneScaleMode.AspectFill
self.scene!.view?.presentScene(gameScene, transition: transition)
【问题讨论】:
确保您的Images.xcassets
资产目录中有一个名为“图片”的图像集。如果是这种情况,您不需要指定文件扩展名,因此删除“.png”。另外,您在控制台中看到什么错误?如果您在应用中断后在控制台中向上滚动一点,您应该会收到更具体的错误消息。
我将我的图片添加到“Images.xcassets”目录中,现在它崩溃的频率更高了。此外,当应用程序中断时,我无法向上滚动,什么也没有出现。我还注意到 'address=0xb176e978' 部分不是恒定的,它有时会给出不同的地址代码。
我会检查场景加载代码。是否可以提供更多代码?还有,这个游戏只有 iPad 吗?
这款游戏是通用的,因此适用于所有 iDevices,我用于场景更改的代码是 :::: var gameScene = EndScene(size: self.size) gameScene.gameScene = self gameScene.score = score gameScene.highscore = highscore var transition = SKTransition.doorsCloseHorizontalWithDuration(0.5) gameScene.scaleMode = SKSceneScaleMode.AspectFill self.scene!.view?.presentScene(gameScene, transition: transition)
这是我从游戏到游戏结束场景使用的代码。虽然我所有的场景更改代码都是相同的格式
尝试在最后一行之前设置断点:self.scene!.view?.presentScene(gameScene, transition: transition)
。当你运行代码时它会走那么远吗?如果是,请检查self.scene!
和self.scene!.view?
的值,看看这些可选变量之一是否为nil
。
【参考方案1】:
我不知道它究竟为什么会导致问题,但我最后一个场景中的一个精灵导致了崩溃。我删除了它,现在它可以正常工作了。
【讨论】:
以上是关于当我在 iPad 上运行时,我的游戏一直在说“EXC_BAD_ACCESS(code=1, address=0xb176e978)”的主要内容,如果未能解决你的问题,请参考以下文章