Observations: @Observable как AsyncSequence 🫡

⚡️ SE-0475 превращает чтение свойств в асинхронную последовательность значений. Реактивность там, где SwiftUI нет: сервисы, акторы, аналитика. let values = Observations { score.points } — замыкание перезапускается, когда меняется что угодно, что оно прочитало. Дальше обычный for await.

⚠️ Три вещи, которые обычно описывают неправильно: Замыкание не выполняется в момент создания. Оно лениво срабатывает на первом next(), чтобы «прогреть» последовательность. Так что первый элемент — это значение на момент начала итерации, а не на момент создания. Это транзакционно: изменения до следующей точки приостановки схлопываются в один элемент. Поменяли два свойства подряд — получите одно событие, а не два.

Промежуточные значения могут теряться. Это не буферизованный лог изменений, полагаться на него как на историю нельзя. Доступно с iOS 26 / macOS 26, import Observation.

#Swift #Swift6_2 #Observation #AsyncSequence #iOS

Observations: @Observable как AsyncSequence 🫡 | Сетка — социальная сеть от hh.ru