[英]UIView's designated initializers in swift
所以我已经将UIView
子类化了
class CustomView: UIView {
}
我可以做点什么
let customView = CustomView()
但是,当我覆盖我认为是UIView
的两个指定初始化程序时,即init(frame:)
和init(coder:)
就像这样
class CustomView: UIView {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.backgroundColor = UIColor.redColor()
}
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = UIColor.redColor()
}
}
我不能再这样创建视图,因为它抱怨init()
不再存在
let customView = CustomView()
我的理解是,如果我覆盖所有指定的初始化器,我也应该继承所有的便利初始化器。
所以我的问题是。 init()
不是UIView上的便利初始化器吗? 或者在UIView上有另一个指定的初始化程序,我还没有覆盖吗?
init
不是UIView上的便利初始化程序。 init
根本不是UIView的初始化器! 它是超类NSObject的初始化器--UIView只是继承它。 它是NSObject上的指定初始化程序。 因此,当您实现指定的初始化程序时,会切断指定初始化程序的继承 - 包括init
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.