我需要子類中的擴展屬性,但此代碼不能編譯。斯威夫特。在子類中使用擴展屬性類型
protocol A {
}
protocol B: A {
}
protocol C: A {
}
class Base {
var presenter: A?
}
class Left: Base {
override var presenter: B?
}
class Right: Base {
override var presenter: C?
}
如何在Swift 2上實現這個?
這是不可能的,因爲您將更改超類的合同。這看起來像一個架構問題,應該可能通過泛型,關聯類型或更好的整體設計來解決。 – Sulthan
我只是不希望超類知道子類的細節。爲什麼這是一個架構問題?現在我把這個屬性放在每個子類中。 – adnako
您嘗試執行的操作有很多問題 - [讀寫屬性不變](http://stackoverflow.com/a/37810234/2976878)&[協議不符合自己]( http://stackoverflow.com/questions/33112559/protocol-doesnt-conform-to-itself)。正如Sulthan所說,你將不得不重新考慮你的設計。你的實際用例是什麼? – Hamish