首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NotificationCenter不接收职位

NotificationCenter不接收职位
EN

Stack Overflow用户
提问于 2016-12-10 12:27:59
回答 1查看 517关注 0票数 0

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

代码语言:javascript
复制
func notify(accel: accelPoint){

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

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

代码语言:javascript
复制
  override func viewDidLoad() {
    super.viewDidLoad()

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

它调用该函数:

代码语言:javascript
复制
func newRawData(notification: NSNotification){ ...

这个很好用。

另一个观察者在一个普通的Swift类中,在应用程序委托中实例化。(我在创建通知类之前和之后都尝试过这样做):

代码语言:javascript
复制
init(){
    NotificationCenter.default.addObserver(self, selector: #selector(FilterManager.newRawData), name: Notification.Name("newRawData"), object: nil)

}

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

代码语言:javascript
复制
@objc func newRawData(){
    print("WHYYY")
}

这个类的名称是正确的,我已经看到观察者被注册了,通知也被发布了,那么为什么这个类没有像其他类一样被通知呢?

另外,为什么我必须将第二个类中的newRawData函数公开给目标C,而不公开viewController类中的newRawData

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-10 12:31:48

您在FilterManager中引用了AppDelegate类吗?如果没有,请在AppDelegate类中添加此代码。此外,您还可以让FilterManger单例来解决这个问题。

代码语言:javascript
复制
var filterManger = FilterManager()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41075506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档