sagen, dass ich ein Protokoll habenWie Protokoll anzupassen Unterklasse mit
protocol A: class {
func configure(view: UIView)
}
Jetzt habe ich zu diesem Protokoll entsprechen wollen, UILabel
als Unterklasse von UIView
final class B: A {
init() {}
func configure(view: UILabel) {
}
}
Aber Fehler mit
Typ B entspricht nicht dem Protokoll A
Es scheint, dass Swift genau den gleichen Typ wie im Protokoll angegeben benötigt. Dies funktioniert
final class B: A {
init() {}
func configure(view: UIView) {
}
}
Aber ich möchte verwenden UILabel
, wie dies zu umgehen?
Warum das configure-Methode des Protokolls kann nicht erwarten, dass ein 'UILabel' anstelle einem' UIView' wenn das nicht das ist, was du willst? –
Nehmen wir an, Sie erstellen eine Instanz Ihrer Klasse B. Nun nehmen wir an, Sie haben sie auf Ihren Protokolltyp A übertragen. Jetzt haben Sie eine Instanz, die anscheinend jede 'UIView' als Argument für Ihre gegebene Methode akzeptieren kann es geht nur speziell auf "UILabels" ein - weshalb dieser Code nicht kompilieren kann. – Hamish