當我有一個UIView這樣的重寫 init 的自定義時:
class ContainerView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setup() {
}
}
為什么我可以init像這樣簡單地初始化視圖并setup()呼叫該方法?
let view = CustomView()
我希望當我呼叫簡單的 NSObjectinit()而不是init(frame: CGRect)?
那么引數是如何frame傳遞的呢?
uj5u.com熱心網友回復:
呼叫CustomView()正在使用繼承的初始化程式NSObject。這隱式呼叫UIView's 的指定初始化程式,init(frame:)使用.zero. 由于您已經覆寫了該初始化程式,因此您的覆寫被呼叫,因此該setup()方法也被呼叫。
frame您可以通過在初始化程式中列印出引數來看到這一點;你會得到一個.zero矩形。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/425579.html
