2016-12-10 63 views
0

我有一个接受的加速度计数据,并张贴在通知像这样一类:设立遵守本通知中心没有收到帖子

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类中,在应用程序委托中实例化。 (我曾尝试之前,创造通知课后这样做):

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

} 

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

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

这个类是正确的,我所看到的观察者正在注册和通知被张贴为什么没有这个类被通知像其他的名字?

此外,为什么我必须将第二个类中的newRawData函数暴露给Objective-C,但不是viewController类中的newRawData

回答

0

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

var filterManger = FilterManger() 
+0

使这个类成为一个单例似乎工作,但我不明白为什么?你能解释一下吗?似乎与直觉相反,人们只能使用单身通知中心。 – ozliftoff