(注意:使用故事板时,问题不存在,只能在没有故事板的情况下进行复制,即以编程方式进行复制)
升级到Xcode7之后,之前正在运行的代码现在正在抛出一个EXC_BAD_ACCESS。我用下面的简单代码重现了这个问题:
class ViewController: UIViewController {
convenience init() {
self.init()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
}
方便init正在对自己进行无休止的调用,直到异常被抛出为止,如果这是预期的行为,那么为什么它与故事板一起工作,为什么它在Xcode7之前的早期工作。 回溯如下:
线程#1:tid = 0x11ec92,0x00025dd4 InitTest InitTest.ViewController.init (self=0x00000000)() -> InitTest.ViewController at ViewController.swift:18, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=2, address=0x38ffc)
frame #0: 0x00025dd4 InitTest
InitTest.ViewController.init(self = 0x00000000)() - > ViewController.swift的InitTest.ViewController:18
帧#1:0x00025df8 InitTest InitTest.ViewController.init (self=0x00000000)() -> InitTest.ViewController + 36 at ViewController.swift:19
frame #2: 0x00025df8 InitTest
InitTest.ViewController.init(self = 0x00000000)() - > ViewController.swift中的InitTest.ViewController + 36:19
帧#3:0x00025df8 InitTest InitTest.ViewController.init (self=0x00000000)() -> InitTest.ViewController + 36 at ViewController.swift:19
frame #4: 0x00025df8 InitTest
InitTest.ViewController.init(self = 0x00000000)() - > ViewController.swift中的InitTest.ViewController + 36:19
帧#5:0x00025df8 InitTest`InitTest.ViewController.init(self = 0x00000000)() - > ViewController.swift:19