【发布时间】:2015-10-20 20:24:03
【问题描述】:
我的 SpriteKit 应用程序(名为 CurlShots)在尝试呈现第一个场景(主菜单)时在启动时崩溃。在模拟器和具有调试版本的设备中一切正常,但使用 iTunes 安装的存档版本我在菜单场景的 didMoveToView 中遇到崩溃。
@objc 类 MenuScene: SKScene {
...
Last Exception Backtrace:
0 CoreFoundation 0x18673c2d8 __exceptionPreprocess + 132 1 libobjc.A.dylib 0x197be80e4 objc_exception_throw + 60 2核心基础0x186743290 + [NSObject(NSObject)不识别选择器:] + 220 3 核心基础 0x186740154 ___转发___ + 928 4 核心基础 0x186642ccc _CF_forwarding_prep_0 + 92 5 CurlShots 0x10011b208 函数签名特化 CurlShots.MenuScene.didMoveToView (CurlShots.MenuScene)(ObjectiveC.SKView) -> () (MenuScene.swift:71) 6 CurlShots 0x100116c80 @objc CurlShots.MenuScene.didMoveToView (CurlShots.MenuScene)(ObjectiveC.SKView) -> () (MenuScene.swift:0) 7 SpriteKit 0x18afd7770-[SKScene _didMoveToView:] + 88 8 SpriteKit 0x18afef004 -[SKView presentScene:] + 264 9 CurlShots 0x10012801c CurlShots.GameViewController.viewWillLayoutSubviews (CurlShots.GameViewController)() -> () (GameViewController.swift:70) 的函数签名特化
我正在使用自动布局,VC 的 viewDidLoad 没有代码。相反,我从 viewWillLayoutSubviews 呈现场景,因为我需要设备屏幕大小来初始化场景
覆盖 func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
让skView = self.view as! SKView
如果 skView.scene == nil
{
skView.showsFPS = false
skView.showsNodeCount = false
skView.ignoresSiblingOrder = true
让 mainMenu = MenuScene(大小:skView.bounds.size)
mainMenu.scaleMode = .AspectFill
skView.presentScene(主菜单)
}
}
我尝试从菜单场景的 didMoveToView 中删除所有代码,但没有任何效果。还尝试在菜单场景中注释掉变量,尽管它们都不是有条件的。我试图将 mainMenu 场景保留在一个变量中以避免它被释放,但这并没有解决崩溃。还尝试覆盖场景的 init(size) 以验证菜单场景在呈现之前实际上已创建。 不知道还能尝试什么。因为崩溃只发生在存档包中,我无法通过设置断点进行调试。
【问题讨论】:
标签: swift sprite-kit