如果类是自定义类,在发布通知后,观察者对应的选择器会被调用两次。有没有更好的方案让选择器只被调用一次?
问问题
3891 次
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 回答