NSSelectorFromString和选择器结构

时间:2018-07-15 09:19:34

标签: swift objective-c-runtime swift4.1.5

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

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

我收到警告

  

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

以及使用NSSelectorFromString

 let aSelector = NSSelectorFromString("registerRemoteNotificationWithApplication:")

没有警告

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

  @objc func registerRemoteNotification(application:UIApplication) {


}

1 个答案:

答案 0 :(得分:0)

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

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

您将使用

let selector = #selector(Foo.registerRemoteNotification(application:))