相关疑难解决方法(0)

Swift:使用协议扩展会导致“无法识别的选择器发送到实例”

我试图在所有符合协议的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

我了解该错误,但不知道如何解决。谁能建议如何做到这一点?

ios swift swift2

2
推荐指数
1
解决办法
1388
查看次数

标签 统计

ios ×1

swift ×1

swift2 ×1