我有点困惑。请看这个例子。
我创建了一个VM协议:
protocol VM {
}
此协议正在我的VC实现中使用
final class VC: UIViewController {
let viewModel: VM
}
现在我创建了特殊的新协议
protocol AwesomeProtocol {
}
protocol AwesomeViewProtocol {
var viewModel: AwesomeProtocol { get }
}
我的想法是使用VM
展开Awesomeness
所以:
protocol VM: AwesomeProtocol {
}
final class VC: UIViewController, AwesomeViewProtocol {
let viewModel: VM
}
但在这里我遇到了编译错误:
输入' VC'不符合协议' AwesomeViewProtocol'
尽管VM
延伸AwesomeProtocol
有人可以解释我做错了什么?
答案 0 :(得分:1)
你必须实现这个。
final class VC: UIViewController, AwesomeViewProtocol {
var viewModel: AwesomeProtocol
}
计算变量接近函数。它们的签名在父和子(继承)类/协议中必须相同。
如果您需要某些摘要,请改用assosiatedtype
和泛型类。