每當Notification
到達並且App嘗試執行其關聯方法時,我都會崩潰並收到unrecognized selector
錯誤。 這裏是我的代碼 - 這是在viewDidLoad
:Swift 4 - 通知中心addObserver問題
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
錯誤。
任何想法我做錯了什麼? (順便說一句,這與Xcode 8完美配合,但現在Swift 4和Xcode 9的語法已經改變了[Xcode讓我通過必要的代碼修復/更新] - 但是崩潰仍在繼續。)
如果您使用過'#selector',編譯器會指出問題 - 'sayHello'必須是'@ objc'。比較https://stackoverflow.com/q/44390378/2976878 – Hamish
使用像這樣'#selector(yourVC.yourfunctionName)' – Mannopson
正如@Hamish所提到的,你應該使用'#selector(sayHello)'和你的方法簽名也傳遞通知對象(放下NS前綴)'@objc func sayHello(_ notification:Notification)' –