我试图在所有符合协议的UIViewControllers中添加点按功能MyProtocol。
以下是我的做法:
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")
}
Run Code Online (Sandbox Code Playgroud)
点击屏幕时,结果如下:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: unrecognized selector sent to instance
我了解该错误,但不知道如何解决。谁能建议如何做到这一点?