Ответ
Combine — это нативный фреймворк Apple для реактивного программирования на Swift, анонсированный в 2019 году. Он предоставляет декларативный API для обработки асинхронных событий и потоков данных с помощью композиции Publisher и Subscriber.
Базовая архитектура:
- Publisher (
Publisher) — объявляет тип значений и возможных ошибок, которые он может emit (издать). - Operator (
Operator) — преобразует значения от Publisher (например,map,filter,debounce). - Subscriber (
Subscriber) — получает значения (и завершение) от Publisher.
Простой пример:
import Combine
// 1. Создаем Publisher (просто испускает одно значение)
let publisher = Just("Hello, Combine!")
// 2. Создаем Subscriber с замыканием
let cancellable = publisher
.sink(receiveValue: { value in
print(value) // Выведет: "Hello, Combine!"
})
// cancellable хранит подписку, при его деинициализации подписка отменяется.
Ключевые преимущества и использование:
- Интеграция с Apple-экосистемой: тесно связан с SwiftUI (
@Published,ObservableObject), Foundation (URLSession.dataTaskPublisher) и UIKit. - Управление жизненным циклом: подписка возвращает
AnyCancellable, который автоматически отменяет подписку при деинициализации. - Богатый набор операторов: для трансформации, комбинирования и управления временем (
flatMap,merge,zip,throttle). - Обработка ошибок: встроенные механизмы через
catch,replaceErrorи т.д.
Важно: Combine доступен на iOS 13+, macOS 10.15+, tvOS 13+ и watchOS 6+. Является Apple-альтернативой сторонним фреймворкам, таким как RxSwift.