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