我有一个类接受加速度计数据,并将其发布在如下通知中:
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函数公开给目标C,而不公开viewController类中的newRawData?
发布于 2016-12-10 12:31:48
您在FilterManager中引用了AppDelegate类吗?如果没有,请在AppDelegate类中添加此代码。此外,您还可以让FilterManger单例来解决这个问题。
var filterManger = FilterManager()https://stackoverflow.com/questions/41075506
复制相似问题