UIView在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() 

我的理解是,如果我覆盖所有指定的初始化器,我应该inheritance所有的便利初始化器。

所以我的问题是。 init()不是UIView上的便利初始值设定项吗? 或者UIView上有另一个指定的初始值设定项,我还没有覆盖呢?

init不是UIView上的便利初始值设定项。 init不是UIView上的初始化器! 它是超类NSObject的一个初始化器,UIView只是inheritance它。 它是NSObject上的一个指定的初始值设定项。 所以当你实现了一个指定的初始化器时,你可以切断指定初始化器的inheritance – 包括init