簡體   English   中英

Swift協議繼承和協議一致性問題

[英]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?

試想,如果這可能會發生什么,你上溯造型的一個實例DashboardPresenterDashboardViewProtocol 您是否可以將符合BasePresenterProtocol任何內容分配給DashboardPresenterProtocol?類型的屬性DashboardPresenterProtocol? –這將是非法的。

因此,讀寫屬性要求必須是不變的(盡管值得注意的是,只讀屬性要求應該可以是協變的, 但是目前不支持 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM