我知道必须调用超类的指定初始化器,我认为init(type: UIButtonType)
已经调用了指定初始化器,所以我在子类便利初始化器中使用它,但失败了
class TSContourButton: UIButton {
enum ContourButtonSizeType {
case large
case small
}
convenience init(type:ContourButtonSizeType) {
self.init(type: .custom)
}
然后,我尝试了这个。它编译好了。但是,看起来不专业
class TSClass: UIButton {
convenience init(frame: CGRect, myString: String) {
self.init(frame: frame)
self.init(type: .custom)
}
所以,我怀疑我可能想错了。所以,我做了一些测试。它成功调用super convenience initializer
。为什么我不能self.init(type: .custom)
在我的子类中使用便利初始化程序UIButton
?
class person: UIButton {
var name: String = "test"
override init(frame: CGRect) {
super.init(frame: .zero)
self.name = "one"
}
convenience init(myName: String) {
self.init(frame: .zero)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
class man: person {
convenience init(mySex: Int) { // it successfully call superclass convenience initializer
self.init(myName: "info")
}