我有点糊涂。请看这个例子。
我创建了一个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
有人能解释我做错了什么?
发布于 2018-05-16 02:09:37
你必须实现这一点。
final class VC: UIViewController, AwesomeViewProtocol {
var viewModel: AwesomeProtocol
}
计算的变量与函数很接近。在父类和子类/协议中,它们的签名必须相同。
如果您需要一些抽象的东西,可以使用assosiatedtype
和泛型类。
https://stackoverflow.com/questions/50367817
复制