Swift: Bei Verwendung der Protokollerweiterung wird der nicht erkannte Selektor an die Instanz gesendet.
Ich versuche, allen UIViewControllern, die dem Protokoll @ entsprechen, eine Funktion zum Tippen hinzuzufügeMyProtocol
.
Below ist, wie ich es mache:
import UIKit
protocol MyProtocol: class{
var foo: String? {get set}
func bar()
}
extension MyProtocol where Self: UIViewController {
func bar() {
print(foo)
}
}
class TestViewController: UIViewController, MyProtocol{
var foo: String?
override func viewDidLoad() {
super.viewDidLoad()
foo = "testing"
let tapGesture = UITapGestureRecognizer(target: self, action: "bar")
}
Was zu folgenden Ergebnissen führt, wenn auf den Bildschirm getippt wird:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: unrecognized selector sent to instance
Ich verstehe den Fehler, weiß aber nicht, wie ich ihn beheben soll. Kann jemand vorschlagen, wie dies getan werden kann?