我有继承的类,如: 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"
行
你能帮我理解原因吗?
这是查看问题https://www.dropbox.com/s/1d8fvxm0es9b5n4/TestInit.zip
的测试项目我使用XCode 6 beta 5,部署目标iOS7 +,iOS8 SDK
答案 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