NSNotificationCenter может привести к ошибкам.Знаете ли вы более элегантные решения?
-
27-10-2019 - |
Вопрос
Я могу добавить наблюдателя дважды (случайно) в центр уведомлений, и я буду получать уведомления дважды. Можно ли получить только одно уведомление?Знаете ли вы более элегантные решения?
Я показываю вам этот пример, потому что это может привести к ошибкам.
родовое словоРешение
Если вы не уверены, добавили ли вы наблюдателя где-то еще, вы можете использовать следующий код каждый раз, когда добавляете наблюдателя
родовое словоТаким образом вы удаляете старый (если он существовал) и добавляете новый.
Это не 100% отказоустойчивость, но это начало.Это может привести к сбою в многопоточных приложениях, где вызовы выполняются асинхронно, или в других уникальных ситуациях.
Другие советы
Вы также можете установить для объекта значение nil, а затем использовать этот объект, как если бы он был еще действителен.
Не все можно сделать отказоустойчивым.