Как управлять памятью подписок (AnyCancellable)?
Суть
sink и assign(to:on:) возвращают AnyCancellable — токен подписки. Пока он жив, подписка активна; при его deinit (или явном cancel()) подписка отменяется и ресурсы освобождаются. Отсюда два правила: сохранить токен (иначе подписка умрёт сразу) и привязать его время жизни к владельцу — обычно через store(in: &bag) в Set<AnyCancellable> у объекта, который заинтересован в данных.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep