Swift 协议一致性问题

Swift protocol conformance issue

我有 2 个协议和一个符合它的 class。

protocol SomeProtocol: AnyObject { }

protocol AnotherProtocol: AnyObject { }

protocol HelperProtocol {
  var delegate: AnotherProtocol? { get }
}

class SomeClass {
  weak var delegate: (SomeProtocol & AnotherProtocol)?
}

extension SomeClass: HelperProtocol { // Type 'SomeClass' does not conform to protocol 'HelperProtocol'

}

如何修复编译错误?

Swift 不能 没有根本原因支持它,但它只是不支持(截至目前)。 解释得很好。

我认为最好的解决方案是制作两个属性,虽然不幸的是丑陋。

class SomeClass: HelperProtocol {
  weak var strictlyTypedDelegate: (SomeProtocol & AnotherProtocol)?
  var delegate: AnotherProtocol? { strictlyTypedDelegate }
}