UIView继承和自定义初始值设定项在swift中抛出EXC_BAD_ACCESS

时间:2014-08-14 06:12:32

标签: xcode inheritance uiview initialization

我有继承的类,如: UIView - > TestSubclass - >测试

class 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"

上获得EXC_BAD_ACCESS错误

你能帮我理解原因吗?

这是查看问题https://www.dropbox.com/s/1d8fvxm0es9b5n4/TestInit.zip

的测试项目

我使用XCode 6 beta 5,部署目标iOS7 +,iOS8 SDK

1 个答案:

答案 0 :(得分:0)

由于init()的继承,您必须覆盖UIView

class TestSubclass : UIView {

    override init() {
        super.init()
    }
}

Apple的参考:

  

默认初始值设定项

     

Swift为任何结构或基类提供默认初始值设定项,为其所有属性提供默认值,并且本身不提供至少一个初始值设定项。默认初始值设定项只是创建一个新实例,其所有属性都设置为其默认值。   https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html