我正在尝试在不使用故事板的情况下启动应用程序。我删除了storyboard文件并删除了Info.plist行以初始化故事板。但是,下面的代码在指示的行上失败。
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
这是在使用iPhone 5s,iOS 7.1时。
同样的事情在Objective-C,IIRC中有效,所以它是一个快速的事情还是我做错了什么?
编辑:当我用通用GameViewController
UIViewController
(这是一个SpriteKit视图控制器)时,这不会失败