我有一个接受加速度计数据的类,并将其发布在如下通知中:
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
?
答案 0 :(得分:0)
你在AppDelegate中引用了FilterManager类吗?如果不在AppDelegate类中添加此代码。你也可以使用FilterManger单例来解决这个问题。
var filterManger = FilterManger()