如何在没有类的情况下为第一响应者使用Swift 2.2中的#选择器?

如何在没有类的情况下为第一响应者使用Swift 2.2中的#选择器?,swift,macos,cocoa,swift2,selector,Swift,Macos,Cocoa,Swift2,Selector,我想将doSomething发送给第一响应者,它可以是多个对象中的任意一个 menuItem = NSMenuItem(title: "Do Something!", action: Selector("doSomething"), keyEquivalent: "") 在Swift 2.2之前,我使用的是选择器(“doSomething”)。现在我该怎么做?使用选择器doSomething创建一个协议,并

我想将
doSomething
发送给
第一响应者
,它可以是多个对象中的任意一个

menuItem = NSMenuItem(title: "Do Something!",
                      action: Selector("doSomething"),
                      keyEquivalent: "")

在Swift 2.2之前,我使用的是
选择器(“doSomething”)
。现在我该怎么做?

使用选择器
doSomething
创建一个协议,并使所有可能成为第一响应者的对象都符合该协议。然后为类实现选择器

@objc protocol MyProtocol {
    func myCoolFuncThatManyObjectsRespondTo()
}

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

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

使用选择器
doSomething
创建一个协议,并使所有可能成为第一响应者的对象都符合该协议。然后为类实现选择器

@objc protocol MyProtocol {
    func myCoolFuncThatManyObjectsRespondTo()
}

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

let menuItem = NSMenuItem(title: "Do Something!", action: #selector(MyProtocol.myCoolFuncThatManyObjectsRespondTo), keyEquivalent: "")
请注意,所选方法必须桥接到Objective-C,因此
MyClass
应扩展
NSObject
或向方法添加
@objc
注释

请注意,所选方法必须桥接到Objective-C,因此
MyClass
应扩展
NSObject
或向方法添加
@objc
注释