Swift 协议继承

Swift protocol inheritance

我有 swift 代码:

protocol ParentProtocol {
    // stuff
}

protocol ChildProtocol: ParentProtocol {
    // additional stuff
}

protocol FooProtocol {
    var variable: ParentProtocol? { get }
}

class Foo:FooProtocol {
    var variable: ChildProtocol?
}

我遇到了编译器错误:

Type 'Foo' does not conform to protocol 'FooProtocol'

我知道,根据FooProtocol,变量类型必须是ParentProtocol类型。另一方面 ChildProtocol 继承自 ParentProtocol,所以它也是一个 ParentProtocol

是否有任何解决方案以这种方式使用协议继承?

我找到了关联类型的解决方案 ()

在我的例子中是:

protocol FooProtocol {
   associatedtype T = ParentProtocol
   var variable:T? { get }
}