NSNotificationCenter:添加观察者但前提是没有注册观察?可以查询对象的观察状态吗?

NSNotificationCenter: Add observer but only if not registered to observe? Possible to query observing status for an object?

有没有办法查看对象是否已经是某种通知类型的观察者?

目前,每个 addObserver 调用都与 removeObserver 配对以避免重复的观察者,但是有没有办法在调用 addObserver 之前查看对象是否已经是观察者?

NSNotificationCenter.defaultCenter().removeObserver(self, name: CustomEvent, object: foo)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #("test"), name: CustomEvent, object: foo) 

很遗憾,没有。就像 KVO 一样,通知中心不提供 API 让我们检查对象 self 在这种情况下) 是否已经注册为观察者与否。

您必须自己使用布尔变量进行跟踪,并在调用 addObserver 时将其设置为 "true",并在调用 removeObserver 时将其重置。 仅当 bool 设置为 "false" 时再次调用 addObserver。

没有其他方法可以确定对象是否已经是观察者。