gpt4 book ai didi

ios - NotificationCenter 添加观察者(观察者 :selector:name:object) -- what is object?

转载 作者:搜寻专家 更新时间:2023-11-01 06:03:33 24 4
gpt4 key购买 nike

我无法理解 NotificationCenter.default.addObserver(observer:selector:name:object) 中的 object 参数是什么

如果我没理解错的话,它是一种过滤器;只有从该对象发布的通知才会被观察到。但我似乎无法真正弄清楚如何使用它。

我创建了一个类并创建了它的全局实例

class FooClass {
func postNotification() {
NotificationCenter.default.post(name: NSNotification.Name("TestNotification"), object: self)
}
}

let globalFoo = FooClass()

然后在我的第一个 ViewController 中按下一个调用 globalFoo.postNotification()

的按钮

然后在我的第二个 ViewController 中,我这样注册:

class SecondViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(notificationReceived), name: NSNotification.Name("TestNotification"), object: globalFoo)

}

func notificationReceived() {
print("notification received")
}

}

当我不指定 object(即 nil)时它工作正常,很明显我误解了它是什么。

最佳答案

发布通知时使用的object参数是用来表示实际发布通知的对象是什么。

添加观察者时,您可以将 object 保留为 nil,您将获得所有指定的通知,而不管实际上是哪个对象发送了通知。或者您可以在添加观察者时指定一个特定的对象,然后您将仅在该特定对象发布指定通知时收到通知。

关于ios - NotificationCenter 添加观察者(观察者 :selector:name:object) -- what is object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43600568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com