NotificationCenter没有收到帖子

时间:2016-12-10 12:28:00

标签: ios objective-c swift concurrency

我有一个接受加速度计数据的类,并将其发布在如下通知中:

func notify(accel: accelPoint){

         NotificationCenter.default.post(name: Notification.Name("newRawData"), object: nil)
}

设置两个对象来观察这个,第一个是viewController:

  override func viewDidLoad() {
    super.viewDidLoad()

   NotificationCenter.default.addObserver(self, selector: #selector(FirstViewController.newRawData), name: Notification.Name("newRawData"), object: nil)

调用该函数:

func newRawData(notification: NSNotification){ ...

这很好用。

另一个观察者在一个常规的Swift类中,在app delegate中实例化。 (我在创建通知类之前和之后尝试过这样做):

init(){
    NotificationCenter.default.addObserver(self, selector: #selector(FilterManager.newRawData), name: Notification.Name("newRawData"), object: nil)

}

哪个应该调用下面的函数,但由于某种原因它没有。

@objc func newRawData(){
    print("WHYYY")
}

这个类的名称是正确的,我已经看到观察者正在注册并且正在发布通知,所以为什么这个类不会像另一个那样被通知?

另外,为什么我必须将第二类中的newRawData函数暴露给objective-C而不是newRawData类中的viewController

1 个答案:

答案 0 :(得分:0)

你在AppDelegate中引用了FilterManager类吗?如果不在AppDelegate类中添加此代码。你也可以使用FilterManger单例来解决这个问题。

var filterManger = FilterManger()