[英]How to conform to protocol using subclass
說我有一個協議
protocol A: class {
func configure(view: UIView)
}
現在我想符合這個協議,使用UILabel
作為UIView
的子類
final class B: A {
init() {}
func configure(view: UILabel) {
}
}
但錯誤
B 型不符合協議 A
似乎 Swift 需要與協議中聲明的類型完全相同。 這有效
final class B: A {
init() {}
func configure(view: UIView) {
}
}
但我想使用UILabel
,如何解決這個問題?
您可以使用被限制為UIView
類型的associatedType
類型。
protocol A: class {
associatedtype View: UIView
func configure(view: View)
}
現在在B
類中,因為UILabel
是UIView
的子類,所以可以這樣做:
final class B: A {
init() {}
func configure(view: UILabel) {
...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.