首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >协议继承与类型不理解

协议继承与类型不理解
EN

Stack Overflow用户
提问于 2018-05-16 01:58:52
回答 1查看 40关注 0票数 1

我有点糊涂。请看这个例子。

我创建了一个VM协议:

代码语言:javascript
运行
AI代码解释
复制
protocol VM {

}

这个协议正在我的VC实现中使用。

代码语言:javascript
运行
AI代码解释
复制
final class VC: UIViewController {
    let viewModel: VM
}

现在我创建了特殊的新协议

代码语言:javascript
运行
AI代码解释
复制
protocol AwesomeProtocol {

}

protocol AwesomeViewProtocol {
     var viewModel: AwesomeProtocol { get }
}

我的想法是用VM扩展Awesomeness,以便:

代码语言:javascript
运行
AI代码解释
复制
protocol VM: AwesomeProtocol {

}

final class VC: UIViewController, AwesomeViewProtocol {
    let viewModel: VM
}

但是在这里我遇到了一个编译器错误:

类型'VC‘不符合协议'AwesomeViewProtocol’

尽管VM扩展了AwesomeProtocol

有人能解释我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-16 02:09:37

你必须实现这一点。

代码语言:javascript
运行
AI代码解释
复制
final class VC: UIViewController, AwesomeViewProtocol {
    var viewModel: AwesomeProtocol
}

计算的变量与函数很接近。在父类和子类/协议中,它们的签名必须相同。

如果您需要一些抽象的东西,可以使用assosiatedtype和泛型类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50367817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档