Что такое Combine и его базовые сущности?
Суть
Combine — декларативный фреймворк Apple (iOS 13) для работы с потоками значений во времени: событий UI, сетевых ответов, уведомлений, изменений свойств. Вместо колбэков вы описываете цепочку преобразований, а фреймворк управляет подпиской, доставкой и завершением.
Базовые сущности:
- Publisher — источник. Параметризован
Output(тип значений) иFailure(тип ошибки,Neverесли ошибок нет). Эмитит ноль и более значений, затем ровно одно завершение:.finishedили.failure. - Subscriber — потребитель. Получает
Subscription, запрашивает demand, принимает значения и завершение. Встроенные:sink,assign. - Subscription — связь между ними; через неё подписчик запрашивает значения (
request(_:)) и отменяет поток (cancel()). Снаружи видна какAnyCancellable. - Operator — метод Publisher'а, возвращающий новый Publisher (
map,filter,debounce,flatMap,combineLatest…). Операторы — чистая композиция, сами ничего не делают до подписки. - Subject (
PassthroughSubject,CurrentValueSubject) — Publisher, в который можно слать значения императивно; мост из нереактивного кода. - Scheduler — где и когда выполняется работа (
DispatchQueue,RunLoop,OperationQueue).
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep