Есть ли способ узнать, зарегистрирован ли объект в качестве наблюдателя для конкретного уведомления? В моей реализации я должен добавить и удалить наблюдателей на лету. По какой-то причине возникает случайная проблема, когда слушатель получает дважды одно и то же уведомление. Я знаю, что мне нужно пересмотреть свою кодировку, но мне будет легче исправить, если бы я знал эту информацию. Спасибо.Вопрос NSNotificationCenter
ответ
№ Нет. Запросить эту информацию невозможно. Если вам это нужно, вам нужно следить за этим.
Возможно, вы захотите ознакомиться с NSNotificationQueue. Вот обзор от Apple. Похоже, это может помочь вам прекратить получать дубликаты уведомлений:
объекты NSNotificationQueue (или просто очереди уведомлений) выступают в качестве буферов для уведомления центров (экземпляры NSNotificationCenter). В то время как центр уведомлений распределяет уведомление, когда отправил, уведомления, помещенное в очередь может быть отложено до конца текущего прохода цикла выполнения или до цикла выполнения не находится в режиме ожидания. Duplicate Уведомления также могут быть объединены, поэтому отправлено только одно уведомление , хотя несколько уведомлений отправлены . Очередь уведомлений поддерживает уведомления (экземпляры NSNotification) обычно в первом в первом порядке (FIFO). Когда уведомление поднимается к передней части очереди , очередь отправляет его в центр уведомлений , который, в свою очередь, отправляет уведомление всем объектам, зарегистрированным в качестве наблюдателей.
Каждый поток имеет по умолчанию очередь уведомлений, которая равна , связанной с центром уведомлений для выполнения задачи. You может создать ваше собственное уведомление очереди и иметь несколько очередей по центр и нить.
- 1. NSNotificationCenter
- 2. Уточнение NSNotificationCenter
- 3. Swift NSNotificationCenter?
- 4. NSNotificationCenter slow?
- 5. NSNotificationCenter изменение наблюдателей заказ
- 6. UIApplicationWillTerminate: NSNotificationCenter vs Application Delegate
- 7. получать уведомления с помощью NSNotificationCenter
- 8. IOS - NSNotificationCenter утечку памяти
- 9. Получение проблемы в NSNotificationCenter
- 10. Безопасна ли NSNotificationCenter?
- 11. Избегайте сохранения циклов, NSNotificationCenter?
- 12. Когда использовать NSNotificationCenter
- 13. NSNotificationCenter эквивалент в C++
- 14. Несколько методов NSNotificationCenter iPhone
- 15. Swift NSNotificationCenter не работает
- 16. NSNotificationCenter и didReceiveRemoteNotification
- 17. размер клавиатуры от NSNotificationCenter
- 18. NSNotificationCenter не работает
- 19. NSNotificationCenter имеет максимальную скорость?
- 20. NSNotificationCenter для AddressBook db
- 21. NSNotificationCenter PasteboardChangedNotification Not Firing
- 22. NSNotificationCenter removeObserver не работает
- 23. NSNotificationCenter и ASIHTTPRequest
- 24. NSNotificationCenter повторно выполняет уведомления
- 25. селектор NSNotificationCenter не называется
- 26. Разъяснение точной функции NSNotificationCenter
- 27. Невозможно удалить NSNotificationCenter
- 28. NSNotificationCenter вызывает несколько раз
- 29. NSNotificationCenter с SpriteKit
- 30. Проблема при вызове NSNotificationCenter
Спасибо за ваш ответ. Я сделал тест, зарегистрировав двух наблюдателей с одним и тем же обработчиком в одном и том же объекте, и он называется дважды. Я думал, что центр уведомлений разрешит подобные ситуации. Я попытаюсь отследить это, но я все же думаю, что было бы неплохо, если бы я мог запросить это в центр. Еще раз спасибо. – Jorge 2010-12-07 05:23:08
Существует решение для Хорхе. Как отметил SteveB. См. Другое сообщение: http://stackoverflow.com/questions/4668372/coalescing-while-using-nsnotificationqueue – 2011-06-07 18:53:40