Swift 2.2 #selector im Compilerfehler der Protokollerweiterung

Ich habe eine Protokollerweiterung, die vor Swift 2.2 einwandfrei funktioniert hat.

Nun habe ich eine Warnung, die mich auffordert, das neue @ zu verwend#selector, aber wenn ich es hinzufüge

keine mit Objective-C Selector deklarierte Methode.

Ich habe versucht, das Problem in diesen wenigen Codezeilen zu reproduzieren, die einfach kopiert und auch auf dem Spielplatz eingefügt werden können.

  protocol Tappable {
    func addTapGestureRecognizer()
    func tapGestureDetected(gesture:UITapGestureRecognizer)
}

extension Tappable where Self: UIView {
    func addTapGestureRecognizer() {
        let gesture = UITapGestureRecognizer(target: self, action:#selector(Tappable.tapGestureDetected(_:)))
        addGestureRecognizer(gesture)
    }
}

class TapView: UIView, Tappable {
    func tapGestureDetected(gesture:UITapGestureRecognizer) {
        print("Tapped")
    }
}

s gibt auch einen Vorschlag, an diese Methode im Protokoll @ anzuhänge@objc, aber wenn ich es tue, werde ich gebeten, es auch der Klasse hinzuzufügen, die es implementiert, aber sobald ich die Klasse hinzufüge, stimmt es nicht mehr mit dem Protokoll überein, weil es die Implementierung in der Protokollerweiterung nicht zu sehen scheint.
Wie kann ich das richtig umsetzen?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage