Xcode UIView继承和自定义初始值设定项在swift中抛出EXC_BAD_访问

Xcode UIView继承和自定义初始值设定项在swift中抛出EXC_BAD_访问,xcode,inheritance,uiview,initialization,Xcode,Inheritance,Uiview,Initialization,我有继承类,比如: UIView->TestSubclass->Test 类Test具有一些属性和方法。在我将一些初始值设定项添加到类TestSubclass中之前,它一直有效: class TestSubclass : UIView { override init(frame: CGRect) { super.init(frame: frame) print("CustomActivityInit") } required init(c

我有继承类,比如: UIView->TestSubclass->Test

Test
具有一些属性和方法。在我将一些初始值设定项添加到类
TestSubclass
中之前,它一直有效:

class TestSubclass : UIView {
    override init(frame: CGRect) {
        super.init(frame: frame)
        print("CustomActivityInit")
    }

    required init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)
        print("CustomActivityInitCoder")
    }
}
在此之后,我无法访问我的
Test
类的属性

override func viewDidLoad() {
    super.viewDidLoad()
    var test = Test(frame: CGRect.nullRect)
    test.test = "zzz"
}
并在第
test.test=“zzz”

你能帮我理解原因吗

这是要查看问题的测试项目


我使用XCode 6 beta 5、部署目标iOS7+、iOS8 SDK,由于继承自
UIView
,因此必须重写
init()

class TestSubclass : UIView {
    
    override init() {
        super.init()
    }
}
苹果的参考资料:

默认初始值设定项 Swift为任何结构或基类提供默认初始值设定项,该结构或基类为其所有属性提供默认值,但本身不提供至少一个初始值设定项。默认初始值设定项只是创建一个新实例,其所有属性都设置为默认值。


非常感谢。它确实有效。但对我来说真的很奇怪。我不明白它以前是怎么工作的。为什么
TestSubclass
及其属性在不重写init()的情况下工作良好?只有继承
TestSubclass
Test
有bug。如果我使用init(frame:),什么时候调用init()方法?为什么xcode只建议使用init(frame:)和init(coder aDecoder:)方法?事实上,我无法从苹果的文档甚至电子书中看出它到底是如何工作的。它必须与
类继承和初始化
初始化器链接
相关。我猜属性不会被初始化,因为
Test
类不是基类,而超类不满足继承规则。因此,您可以在
TestSubclass
中重写
init()
,也可以不重写
TestSubclass
中任何指定的初始值设定项。据我所知,这些解决方案可能也能奏效。