我需要子类中的扩展属性,但此代码不能编译。斯威夫特。在子类中使用扩展属性类型
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