从 class 继承协议?

Protocol inheritance from class?

我阅读了有关 Protocols 的文档,但找不到有关从 class 继承协议的任何信息,但代码可以编译。据我所知,协议只能继承其他协议,我从未见过继承自class的协议。我什至不知道允许这种行为的语言。

class A {

}

protocol X: A {

}
// forced to inherit from class A, because of X protocol
class B: A, X {

}

这是某种错误吗?

实施于 Swift 5:来自 Swift 5 Release notes

协议现在可以将它们的符合类型限制为低于class 给定 class 的类型。支持两种等效形式:

protocol MyView: UIView { /*...*/ }
protocol MyView where Self: UIView { /*...*/ } 

请参阅 John Sundell 的 tweet,展示了一个可能的用例