如果类是自定义类,则在发布通知后,对应于观察者的选择器将被调用两次。是否有更好的解决方案,以便只调用一次选择器?
答案 0 :(得分:8)
如果选择器被调用两次,你可能已经注册了两次。
答案 1 :(得分:3)
如果观察者类按名称注册了通知,但没有针对特定对象注册,则它将收到多条消息,因为每次发生通知时都会调用它,而不管原始对象是什么。
同样,如果观察者针对特定对象进行了注册,但未针对命名通知进行注册,则每次有关于该对象的通知时都会向其发送消息。
另一种了解遥远状态变化的机制是关键价值观察 - http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html
答案 2 :(得分:1)
对我有用的是几件事:
1 - 在进行addObserver注册调用的类中,是添加特定对象。
2 - 在进行postNotification调用的类中,作为相同类型的对象。
我也在dispatchAsync调用中执行postNotificaiton,但这与您的问题无关。
答案 3 :(得分:0)
检查addObserver是否只设置一次。就我而言,addObserver循环运行了两次,因此就是错误。