Вопрос проверяет понимание внутренней реализации источника событий и управления памятью.
Observable хранит список подписчиков и уведомляет их при изменении состояния. Обычно подписчики хранятся как слабые ссылки, чтобы избежать retain cycle. При событии Observable проходит по списку и вызывает методы или замыкания. Также может использоваться фильтрация или удаление неактуальных подписчиков. Это позволяет безопасно рассылать события.
Хранение и уведомление подписчиков — центральная часть паттерна Observer.
Observable может хранить:
массив слабых ссылок
словарь идентификаторов
список замыканий
private var observers = [WeakObserver]()
Когда состояние меняется, Observable:
формирует событие
проходит по подписчикам
вызывает обработчики
Перед рассылкой часто:
удаляются освобождённые подписчики
проверяется актуальность
Правильное хранение подписчиков предотвращает утечки памяти и делает событийную модель надёжной.