You cannot implement a read-write property requirement of type BasePresenterProtocol?
with a property of type DashboardPresenterProtocol?
.
Consider what would happen if this were possible, and you upcast an instance of DashboardPresenter
to DashboardViewProtocol
. You would be able to assign anything that conforms to BasePresenterProtocol
to a property of type DashboardPresenterProtocol?
– which would be illegal.
For this reason, a read-write property requirement has to be invariant (although it’s worth noting that a readable-only property requirement should be able to be covariant – but this currently isn’t supported).