Son*_*oni 2 swift swift-protocols
protocol BasePresenterProtocol : class {}
protocol DashboardPresenterProtocol : BasePresenterProtocol {}
final class DashboardPresenter {
weak var view: DashboardPresenterProtocol?
init() {
self.view = DashboardViewController()
}
func test() {
print("Hello")
}
}
extension DashboardPresenter: DashboardViewProtocol { }
protocol BaseViewProtocol : class {
weak var view: BasePresenterProtocol? { get set }
}
protocol DashboardViewProtocol : BaseViewProtocol {
}
class DashboardViewController {
}
extension DashboardViewController: DashboardPresenterProtocol { }
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我在下一行收到错误
extension DashboardPresenter: DashboardViewProtocol { }
Run Code Online (Sandbox Code Playgroud)
那个,DashboardPresenter
不向协议确认DashboardViewProtocol
,但我已经宣布weak var view: DashboardPresenterProtocol?
了DashboardPresenter
.虽然我已经宣布了
为什么我收到此错误?请让我知道我在这段代码中做错了什么.
您无法使用type BasePresenterProtocol?
属性实现类型的读写属性要求DashboardPresenterProtocol?
.
想想看,如果这会发生什么是可能的,你上溯造型的一个实例DashboardPresenter
来DashboardViewProtocol
.您将能够分配符合BasePresenterProtocol
类型属性的任何内容DashboardPresenterProtocol?
- 这将是非法的.
出于这个原因,读写属性要求必须是不变的(尽管值得注意的是,只读的属性要求应该能够协变 - 但目前不支持这种要求).
虽然在任何情况下,协议都不符合自己,所以你甚至不能使用BasePresenterProtocol?
符合的类型DashboardPresenterProtocol?
.
归档时间: |
|
查看次数: |
809 次 |
最近记录: |