[英]Swift Protocol inheritance and protocol conformance issue
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 { }
在上面的代碼中,我在下一行收到錯誤
extension DashboardPresenter: DashboardViewProtocol { }
那, DashboardPresenter
不能確認協議DashboardViewProtocol
,但是我聲明了weak var view: DashboardPresenterProtocol?
在DashboardPresenter
。 雖然我已經宣布
為什么會出現此錯誤? 請讓我知道我在這段代碼中做錯了什么。
您BasePresenterProtocol?
類型的讀寫屬性要求BasePresenterProtocol?
具有DashboardPresenterProtocol?
類型的屬性DashboardPresenterProtocol?
。
試想,如果這是可能會發生什么,你上溯造型的一個實例DashboardPresenter
到DashboardViewProtocol
。 您是否可以將符合BasePresenterProtocol
任何內容分配給DashboardPresenterProtocol?
類型的屬性DashboardPresenterProtocol?
–這將是非法的。
因此,讀寫屬性要求必須是不變的(盡管值得注意的是,只讀屬性要求應該可以是協變的, 但是目前不支持 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.