Я вылетаю и получаю ошибку unrecognized selector
каждый раз, когда приходит Notification
, и приложение пытается выполнить связанный с ним метод. Вот мой код, который находится в viewDidLoad
:
let notificationCenter = NotificationCenter.default
notificationCenter.addObserver(self, selector: Selector(("sayHello")), name:NSNotification.Name(rawValue: "dataDownloadCompleted"), object: nil)
Метод sayHello()
довольно прост — выглядит так:
func sayHello() {
print("Hello")
}
Я убедился, что Notification
успешно отправлено и доставлено успешно, так что проблема не в этом. Сбой происходит, когда приложение пытается действовать после прибытия Notification
, выполняя метод sayHello()
. Он продолжает выдавать мне эту ошибку unrecognized selector
.
Любые идеи, что я делаю неправильно? (Кстати, это отлично работало со Swift 3 и Xcode 8, но теперь с Swift 4 и Xcode 9 синтаксис изменился [Xcode провел меня через необходимые исправления/обновления кода] - но сбои продолжают происходить.)
#selector
, компилятор указал бы на проблему —sayHello
должно быть@objc
. Сравните stackoverflow.com/q/44390378/2976878 - person Hamish   schedule 11.10.2017#selector(yourVC.yourfunctionName)
- person Mannopson   schedule 11.10.2017#selector(sayHello)
и свою подпись метода, вы также должны передать объект уведомления (отбросить префикс NS)@objc func sayHello(_ notification: Notification)
- person Leo Dabus   schedule 11.10.2017self
вместоviewControllerName
. Пример:#selector(self.functionName)
- person Mannopson   schedule 11.10.2017