【发布时间】:2021-09-21 17:45:48
【问题描述】:
我有一个描述路由器行为的基本协议:
protocol BaseRouterProtocol: AnyObject {
associatedtype View: MainView
func dismiss(viewController: ViewController<View>?)
}
extension BaseRouterProtocol {
func dismiss(viewController: ViewController<View>?) {
viewController?.navigationController?.popViewController(animated: true)
}
}
我想把这个协议应用到另一个这样的地方:
protocol StartRouterProtocol: BaseRouterProtocol where View == StartView {
func showTermsVC()
func showSignInVC()
}
但是当我创建这种类型的变量时:
let router: StartRouterProtocol
编译器给我一个错误:
Protocol 'StartRouterProtocol' 只能用作通用约束,因为它具有 Self 或关联类型要求
如果我描述了我期望的类型,为什么会发生这种情况?
【问题讨论】:
标签: swift protocols swift-protocols