gpt4 book ai didi

swift - 如何使用子类来遵守协议(protocol)

转载 作者:可可西里 更新时间:2023-11-01 00:36:32 26 4
gpt4 key购买 nike

假设我有一个协议(protocol)

protocol A: class {
func configure(view: UIView)
}

现在我想遵守这个协议(protocol),使用UILabel作为UIView的子类

final class B: A {
init() {}

func configure(view: UILabel) {

}
}

但是错误

Type B does not conform to protocol A

似乎 Swift 需要与协议(protocol)中规定的类型完全相同的类型。这行得通

final class B: A {
init() {}

func configure(view: UIView) {

}
}

但是我想使用 UILabel,如何解决这个问题?

最佳答案

您可以使用限制为 UIView 类型的 associatedType

protocol A: class {
associatedtype View: UIView
func configure(view: View)
}

现在在 B 类中,因为 UILabelUIView 的子类,所以可以这样做:

final class B: A {
init() {}

func configure(view: UILabel) {
...
}
}

关于swift - 如何使用子类来遵守协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37504091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com