簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM