Declare variable vom Typ UIView gemäß einem Protokoll in Swift 2
Muss ich eine variable deklarieren, die vom Typ UIView
die auch konform zu MyProtocol
:
protocol MyProtocol: class {
func foobar()
}
class MyClass {
var myView: UIView<MyProtocol>! //Error: Cannot specialize non-generic type 'UIView'
}
Jedoch bekomme ich den compiler-Fehler: Nicht spezialisiert nicht-generischen Typ 'UIView'.
Muss ich Zugriffsmethoden auf die Variablen aus UIView
und MyProtocol
.
Was ist die korrekte Deklaration von Variablen, die zur Unterstützung dieser Anforderungen?
Ob es einen Unterschied macht, nur UIView
Unterklassen implementieren das Protokoll. Derzeit ich hinzufügen-Protokoll-conformance-über Erweiterungen.
Fand ich diese Antwort: https://stackoverflow.com/a/25771265/233602 aber es ist nicht klar, ob diese Antwort ist immer noch die beste option zu gehen, wenn das schreiben in Swift 2.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machen Sie Ihre Klasse an eine generische Klasse wie folgt,
Den Fehler oben sagt, dass der UIView nicht spezialisiert zu Protokoll MyProtocol, so, die Lösung hier wäre, um Ihre Klasse eine generische Klasse, die nimmt generischen parameter entspricht MyProtocol und ist Unterklasse von UIView.
Wahrscheinlich der beste Weg, dies zu lösen, ist ein Protokoll, wo alle
UIViews
entsprechen:Verwenden Sie die
view
- Eigenschaft, um aufUIView
spezifische Funktionalität.UIView
.