Swift: o uso da extensão de protocolo resulta em "seletor não reconhecido enviado à instância"
Estou tentando adicionar uma funcionalidade de toque a todos os UIViewControllers onde eles estão em conformidade com o protocoloMyProtocol
.
Abaixo está como eu estou fazendo isso:
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")
}
O que resulta no seguinte quando a tela é tocada:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: unrecognized selector sent to instance
Entendo o erro, mas não sei como corrigi-lo. Alguém pode sugerir como isso pode ser feito?