Если класс является пользовательским классом, после отправки уведомления, селектор, соответствующий наблюдателю, вызывается дважды. Есть ли лучшее решение, чтобы селектор вызывался только один раз?Почему наблюдатель в NSNotification назывался дважды ....?
ответ
Если класс наблюдателя зарегистрирован для уведомления по имени, но не для определенного объекта, он будет получать несколько сообщений, так как он будет вызываться каждый раз, когда будет происходить уведомление, независимо от исходного объекта.
Аналогично, если наблюдатель зарегистрирован на конкретном объекте, но не против именованного уведомления, он будет передаваться по почте каждый раз, когда есть уведомление об этом объекте.
альтернативный механизм быть информированным об изменениях в далеком государстве, является ключевым наблюдающий Value - http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html
Если селектор вызывается дважды, вы, вероятно, зарегистрировались для него дважды.
То, что сработало для меня было несколько вещей:
1-В классе, где регистрация addObserver вызов был сделан, чтобы добавить конкретный объект.
2-В классе, где выполняется вызов postNotification, как объект одного и того же типа.
Я также делаю свое сообщениеNotificaiton в диспетчерском вызове Async, но это не связано с вашей проблемой.
Проверьте, установлен ли добавочный сервер только один раз. В моем случае цикл addObserver выполнялся дважды, отсюда и ошибка.
- 1. Наблюдатель в NSNotification (itemDidFinishPlaying) СЛУЧАЙНО дважды вызываться
- 2. Почему метод краски назывался дважды?
- 3. Наблюдатель NSNotification - NSManagedObjectContextDidSave
- 4. Класс как наблюдатель NSNotification?
- 5. NSNotification - наблюдатель не соответствует
- 6. Наблюдатель NSNotification в пользовательском UITableViewCell?
- 7. JUNIT test - почему конструктор назывался дважды
- 8. селектор NSNotification вызывался дважды
- 9. NSNotification - наблюдатель с несколькими событиями для запуска
- 10. Почему этот наблюдатель Ember.computed собственности дважды срабатывает?
- 11. NSNotification - проверить, если наблюдатель добавляется перед вывешивать
- 12. Может ли наблюдатель прослушивать другой поток в NSNotification в iOS?
- 13. Почему .NET назывался .NET?
- 14. NSNotification называется много раз, когда наблюдатель находится в UITableViewHeaderFooter подклассе
- 15. Ember.js - наблюдатель модели зрения дважды срабатывает
- 16. Сделать NSNotification до тех пор, пока не будет установлен наблюдатель
- 17. NSNotification терпит неудачу .... Почему?
- 18. Почему используя NSNotification аргумент
- 19. Почему NSNotification работает медленно?
- 20. nsnotification неприятности
- 21. наблюдатель содержимого вызывается дважды для приема смс
- 22. NSNotification в Iphone
- 23. Ошибки NSNotification
- 24. Как опубликовать несколько NSNotification?
- 25. Время жизни объекта NSNotification
- 26. Почему null назывался «подтипом каждого ссылочного типа»?
- 27. Почему мой метод KeyPressed никогда не назывался?
- 28. Наблюдатель изменения высоты клавиатуры
- 29. NSNotification и многопоточность
- 30. NSNotification объект ориентация
Проблема заключается в том, что в наконечнике имеется два элемента управления, который настроен на один и тот же класс. и поскольку наблюдатель зарегистрирован в awakeFromNib() этого класса, селектор также вызывается дважды для одного postNotification. :( –