2016-04-24 139 views
4

有没有办法查看对象是否已经是某种通知的观察者?NSNotificationCenter:添加观察者,但只有未注册才能观察?可以查询对象的观察状态?

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

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

@ozgur好吧,请添加为答案,所以你可以收到信用 – Crashalot

回答

7

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

+1

谢谢!真棒头像:)顺便说一句你也碰巧知道答案http://stackoverflow.com/questions/36728704/delay-when-using-instantiateviewcontrollerwithidentifier-but-not-performseguewit – Crashalot

3

当您调用addObserver调用并在调用removeObserver时重置它时,您将不得不使用bool变量进行跟踪,并将其设置为“true”。 仅当bool设置为“false”时再次调用addObserver。

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