Swift 快速启动应用程序而没有主情节提要崩溃
我正在尝试启动一个不使用故事板的应用程序。我删除了序列图像板文件并删除了用于初始化序列图像板的Info.plist行。但是,以下代码在指示的行上失败Swift 快速启动应用程序而没有主情节提要崩溃,swift,Swift,我正在尝试启动一个不使用故事板的应用程序。我删除了序列图像板文件并删除了用于初始化序列图像板的Info.plist行。但是,以下代码在指示的行上失败 import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? var navigationController: UINavigationController?
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var navigationController: UINavigationController?
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
var viewController = GameViewController()
navigationController = UINavigationController(rootViewController: viewController)
window = UIWindow(frame: UIScreen.mainScreen().bounds)
window!.rootViewController = navigationController
window!.makeKeyWindow()
window!.makeKeyAndVisible() // fails here
return true
}
}
当它崩溃时会出现以下情况:
libswiftCore.dylib`swift_dynamicCastObjCClassUnconditional:
0x10041a86c: stp x20, x19, [sp, #-32]!
0x10041a870: stp fp, lr, [sp, #16]
0x10041a874: add fp, sp, #16
0x10041a878: mov x8, x1
0x10041a87c: mov x19, x0
0x10041a880: cbz x19, 0x10041a8a4 ; swift_dynamicCastObjCClassUnconditional + 56
0x10041a884: nop
0x10041a888: nop
0x10041a88c: ldr x1, #163108 ; "isKindOfClass:"
0x10041a890: mov x0, x19
0x10041a894: mov x2, x8
0x10041a898: bl 0x10041cf30 ; symbol stub for: objc_msgSend
0x10041a89c: tbnz w0, #0, 0x10041a8a8 ; swift_dynamicCastObjCClassUnconditional + 60
0x10041a8a0: brk #1 // Thread 1: EXC_BREAKPOINT (code=1, subcode=0x10041a8a0)
0x10041a8a4: movz x19, #0
0x10041a8a8: mov x0, x19
0x10041a8ac: ldp fp, lr, [sp, #16]
0x10041a8b0: ldp x20, x19, [sp], #32
0x10041a8b4: ret
这是在使用iphone5s、ios7.1时
同样的事情也适用于Objective-C,IIRC,那么这是一件迅速的事情还是我做错了什么
编辑:当我用通用UIViewController替换SpriteKit视图控制器GameViewController时,这不会失败当部分应该对您简单明了并立即向您指出故障源时,这不会失败。问题在于GameViewController,而不是AppDelegate。请进行一些调试并返回结果。问题是GameViewController的视图不是SKView。为了修复它,我在视图中添加了一个新的SKView。对于将来的任何人,在设置视图之前,请在SpriteKit ViewDiLoad中使用view=SKViewframe:view.bounds。