所以我UIView
像这样子类化了
class CustomView: UIView {
}
我可以做类似的事情
let customView = CustomView()
但是,当我重写了我认为是两个指定initialisersUIView
即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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句