0

如果我使用 Selector 创建选择器,我有一个问题 NSSelectorFromString 和 Selector 有什么不同

 let bSelector = Selector("registerRemoteNotificationWithApplication:")
 let cSelector = Selector(stringLiteral: "registerRemoteNotificationWithApplication:")

我收到警告

字符串文字不是有效的 Objective-C 选择器

当使用 NSSelectorFromString

 let aSelector = NSSelectorFromString("registerRemoteNotificationWithApplication:")

没有警告

即使函数是用/不带@objc 声明的

  @objc func registerRemoteNotification(application:UIApplication) {


}
4

1 回答 1

0

从 Swift 3 开始,你应该使用#selector()它。给定

class Foo: NSObject {
    @objc func registerRemoteNotification(application:UIApplication) { }
}

你会用

let selector = #selector(Foo.registerRemoteNotification(application:))
于 2018-07-20T09:05:03.370 回答