1

我有多个 NSWindowController 实例,它们正在注册一个通知,以便在编辑发生时进行监听。

现在,当我从 windowcontroller 的一个实例编辑某些内容时,通知会被发布,并且该 NSWindowcontroller 的所有实例都会收听该通知,但我只希望已更新其详细信息的实例可以收听。

我怎样才能做到这一点?

4

1 回答 1

2

[NSNotificationCenter addObserver:selector:name:object:]如参数方法的文档中所述object

观察者想要接收其通知的对象;也就是说,只有这个发送者发送的通知才会传递给观察者。如果你传递 nil,通知中心不会使用通知的发送者来决定是否将它传递给观察者。

self所以只是作为对象传递。
例如

注册通知:

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(someSelector:)
                                                 name:@"SomeNotification"
                                               object:self]; // <- SELF!!

发布通知:

[[NSNotificationCenter defaultCenter] postNotificationName:@"SomeNotification"
                                                            object:self //<- SELF!!
                                                          userInfo:nil];
于 2016-06-07T07:42:35.067 回答