Swift - 发送到实例的无法识别的选择器

Swift - unrecognized selector sent to instance

我在我的 Swift 项目中设置了一个简单的 NSNotification

NSNotificationCenter.defaultCenter().addObserver(self, selector: "serviceAccessChanged", name:"LocationAccessChangedNotification", object: nil)

我也试过了...

NSNotificationCenter.defaultCenter().addObserver(self, selector: "serviceAccessChanged:", name:"LocationAccessChangedNotification", object: nil)

调用的方法看起来是这样的。

private func serviceAccessChanged() {
    println("serviceAccessChanged")
}

发出通知后,我收到以下错误。

-[CoolApp.HomeViewController serviceAccessChanged]: unrecognized selector sent to instance 0x7fc91324bba0

出了什么问题,我该如何解决?

私有函数不会暴露给 Objective C,这就是您得到此异常的原因。使此方法可访问,并使用 serviceAccessChanged 选择器。

只需用@objc 标记您的私有方法

@objc private func serviceAccessChanged() {
    println("serviceAccessChanged")
}