Swift: el uso de la extensión de protocolo da como resultado un "selector no reconocido enviado a la instancia"
Estoy tratando de agregar una funcionalidad de toque a todos los UIViewControllers donde se ajustan al protocoloMyProtocol
.
A continuación se muestra cómo lo estoy haciendo:
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")
}
Lo que resulta en lo siguiente cuando se toca la pantalla:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: unrecognized selector sent to instance
Entiendo el error pero no sé cómo solucionarlo. ¿Alguien puede sugerir cómo se puede hacer esto?