Je plante et obtient une erreur unrecognized selector
chaque fois qu'un Notification
arrive et l'application essaie d'exécuter sa méthode associée. Voilà mon code - qui est en viewDidLoad
:Swift 4 - Centre de notifications addObserver problème
let notificationCenter = NotificationCenter.default
notificationCenter.addObserver(self, selector: Selector(("sayHello")), name:NSNotification.Name(rawValue: "dataDownloadCompleted"), object: nil)
La méthode sayHello()
est assez simple - ressemble à ceci:
func sayHello() {
print("Hello")
}
J'ai vérifié que le Notification
est affiché avec succès et qu'il ARRIVE avec succès - ce n'est pas le problème. L'erreur se produit lorsque l'application semble agir à l'arrivée du Notification
- en exécutant la méthode sayHello()
. Il continue à me donner cette erreur unrecognized selector
.
Des idées que je fais mal? (En passant, cela a parfaitement fonctionné avec Swift 3 & Xcode 8, mais maintenant avec Swift 4 et Xcode 9 la syntaxe a changé [Xcode m'a guidé à travers les correctifs/mises à jour de code nécessaires] - mais les plantages continuent.)
Si vous aviez utilisé '# selector', le compilateur aurait signalé le problème -' sayHello' doit être '@ objc'. Comparez https://stackoverflow.com/q/44390378/2976878 – Hamish
Utilisez comme ceci '#selector (yourVC.yourfunctionName)' – Mannopson
Comme déjà mentionné par @Hamish vous devriez utiliser '#selector (sayHello)' et votre signature de méthode vous devriez passer également l'objet de notification (supprimer le préfixe NS) '@objc func sayHello (_ notification: Notification)' –