UIView在swift中指定了初始化程序

时间:2015-02-17 01:42:49

标签: ios 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上有另一个指定的初始化程序,我还没有覆盖它吗?

1 个答案:

答案 0 :(得分:4)

init不是UIView上的便利初始化程序。 init根本不是UIView的初始化程序!它是超类NSObject的初始化器--UIView只是继承它。它是NSObject上的指定的初始值设定项。因此,当您实现指定的初始化程序时,会切断指定初始化程序的继承 - 包括init