NSSelectorFromString и Selector Struct

У меня есть вопрос, в чем разница между NSSelectorFromString и Selector, если я создаю селектор с помощью Selector

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

я получил предупреждение

Строковый литерал не является допустимым селектором Objective C

и при использовании NSSelectorFromString

 let aSelector = NSSelectorFromString("registerRemoteNotificationWithApplication:")

нет предупреждения

даже если функция была объявлена ​​с / без @objc

  @objc func registerRemoteNotification(application:UIApplication) {


}

1 ответ

Начиная с Swift 3, вы должны использовать #selector() за это. Дано

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

вы бы использовали

let selector = #selector(Foo.registerRemoteNotification(application:))
Другие вопросы по тегам