升级到Xcode7后,EXC_BAD_ACCESS带有方便的init()

时间:2015-09-22 14:59:43

标签: ios xcode swift swift2

(注意:使用故事板时,问题不存在,只能在没有故事板的情况下进行复制,即以编程方式进行复制)

升级到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

中的InitTest.ViewController + 36

0 个答案:

没有答案