Ich habe eine Klasse mit einem Delegaten. Ich erstelle eine Unterklasse, die auch einen Delegaten hat. Ich wollte das Protokoll für den zweiten Delegaten erweitert das Protokoll für die ersten Delegaten verwendet lassen:Protokollvererbung + Delegierte in Swift
protocol MySuperClassProtocol {
func foo()
}
class MySuperClass {
var delegate:MySuperClassProtocol?
}
protocol MySubClassProtocol:MySuperClassProtocol {
func bar()
}
class MySubClass: MySuperClass {
override var delegate:MySubClassProtocol? // compiler error - "cannot override..."
func test() {
delegate?.foo()
delegate?.bar()
}
}
class UserClass:MySubClassProtocol {
func foo() {
println("foo!")
}
func bar() {
println("bar")
}
}
Gibt es eine Möglichkeit, dies zu lösen? Die einzige mögliche Lösung, die ich sehe, ist, die 2 Protokolle unabhängig voneinander zu machen und verschiedene Namen zu verwenden. Gefällt mir:
protocol MySuperClassProtocol {
func foo()
}
class MySuperClass {
var mySuperClassDelegate:MySuperClassProtocol?
}
protocol MySubClassProtocol {
func bar()
}
class MySubClass: MySuperClass {
var mySubClassDelegate:MySubClassProtocol?
func test() {
mySuperClassDelegate?.foo()
mySubClassDelegate?.bar()
}
}
class UserClass:MySuperClassProtocol, MySubClassProtocol {
func foo() {
println("foo!")
}
func bar() {
println("bar")
}
}
Aber das sieht ein bisschen komisch aus + werde ich nicht zulassen, Namenskonvention für Delegate- "Delegate" zu verwenden.
Warum brauchen Sie ein Super Class und Super Class Protocol? –
Weil ich die allgemeine Funktionalität von vielen Klassen in der Super-Klasse und es gibt auch einen "gemeinsamen Delegierten". – Ixx