5

如果类是自定义类,在发布通知后,观察者对应的选择器会被调用两次。有没有更好的方案让选择器只被调用一次?

4

4 回答 4

7

如果选择器被调用两次,您可能已经注册了两次。

于 2009-08-25T15:24:12.390 回答
3

如果观察者类通过名称注册通知,而不是针对特定对象,它将收到多条消息,因为每次通知发生时都会调用它,而与原始对象无关。

同样,如果观察者是针对特定对象注册的,而不是针对命名通知,则每次有关于该对象的通知时都会向它发送消息。

另一种通知远程状态变化的机制是键值观察 - http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html

于 2009-08-25T19:32:48.957 回答
1

对我有用的是几件事:

1-在进行 addObserver 注册调用的类中,添加特定对象。

2-在进行 postNotification 调用的类中,作为相同类型的对象。

我也在 dispatchAsync 调用中做我的 postNotificaiton ,但这与你的问题无关。

于 2013-09-28T20:43:14.333 回答
0

检查 addObserver 是否只设置了一次。就我而言, addObserver 循环运行了两次,因此出现了错误。

于 2014-06-04T09:10:43.090 回答