如何在第一个响应者中使用Swift 2.2中的#selector,没有类?

Ale*_*lex 1 macos cocoa selector swift swift2

我想发送doSomethingfirstResponder,可能是几个对象中的任何一个.

menuItem = NSMenuItem(title: "Do Something!",
                      action: Selector("doSomething"),
                      keyEquivalent: "")
Run Code Online (Sandbox Code Playgroud)

Selector("doSomething")在Swift 2.2之前使用过.我现在该怎么办?

JAL*_*JAL 5

使用选择器创建协议,doSomething并让所有可以作为第一响应者的对象符合它.然后为您的类实现选择器.

@objc protocol MyProtocol {
    func myCoolFuncThatManyObjectsRespondTo()
}

extension NSObject: MyProtocol {
    func myCoolFuncThatManyObjectsRespondTo() {
        print("Sup?")
    }
}

let menuItem = NSMenuItem(title: "Do Something!", action: #selector(MyProtocol.myCoolFuncThatManyObjectsRespondTo), keyEquivalent: "")
Run Code Online (Sandbox Code Playgroud)