Веб-версияОткрыть в Telegram

Пост😏 Хочу разобрать статью про переход на Observation в SwiftUI и напомнить, зачем вообще появился этот механизм и чем он о…

5 февраля 2026
E
Egor Mezhin
Ссылка
нажмите — покажем
😏 Хочу разобрать статью про переход на Observation в SwiftUI и напомнить, зачем вообще появился этот механизм и чем он отличается от привычного ObservableObject. Тема не новая, но на практике до неё доходят не сразу, особенно если в проекте уже есть устоявшийся подход к работе с состоянием. 🔹 Начиная с iOS 17 в SwiftUI доступен фреймворк Observation, который позволяет отслеживать изменения состояния без использования ObservableObject, @Published и Combine. Основная идея – упростить работу с состоянием и сократить шаблонный код. 🔹 Классический подход с ObservableObject работает, но имеет свои особенности: • необходимость явно помечать свойства как @Published • дополнительный синтаксический шум • риск забыть опубликовать изменения • привязка к Combine даже в простых сценариях Observation предлагает более прямой способ описывать наблюдаемое состояние. 🔹 На уровне кода вместо ObservableObject используется атрибут @Observable. Старый подход: class Counter: ObservableObject { @Published var value = 0 } С Observation: @Observable class Counter { var value = 0 } 🔹 Преимущества такого подхода: • Нет необходимости писать @Published, objectWillChange и вспомогательные конструкции. • Меньше риска ошибок, связанных с ручным управлением публикацией изменений. • Логика наблюдения находится ближе к самой модели. Пример использования: @Observable class TimerModel { var time: Int = 0 func tick() { time += 1 } } Использование во View: struct TimerView: View { @State private var model = TimerModel() var body: some View { Text("Time: \(model.time)") } } SwiftUI отслеживает изменения time и обновляет View без дополнительной настройки. 🔹 Где Observation особенно уместен: • простые ViewModel и модели состояния • логика, не требующая Combine • случаи, где ObservableObject использовался только ради обновления UI Следующие механизмы продолжают работать как раньше: • @State • @Binding • @EnvironmentObject Observation не заменяет их, а дополняет. 🍕 Observation упрощает работу с состоянием в SwiftUI за счёт уменьшения шаблонного кода и более прямого описания наблюдаемых моделей. Для новых экранов и при постепенном рефакторинге старых ObservableObject это часто более удобный и читаемый вариант. #R #SwiftUI #Observation
9 · 270 ·

Рядом в ленте

VVlad Tkachenko😄 Когда хочется и новый стек трогать и легаси сильно не шатать Если коротко, то тут статья, а тут макрос, который сгенерирует async/await обертки над старыми caKKirill Smirnov🦾 Новый open-source навык для SwiftUI и AI-агентов Если вы уже используете AI-агентов для генерации SwiftUI, то наверняка сталкивались с тем, что код получался
это сообщение
KKirill Smirnov🦾 Автоматика подъехала: Опыт Tuist-а, где Codex мигрирует проект на кодген и поддерживает кеширование. + Tuist превращает все это дело в skill 🛠️ 📦 Миграция MasKKirill Smirnov🤖 📡 Базовые протоколы клиент-серверного взаимодействия (без обратной связи) Хочется сделать серию постов по основам CS и system-design. Если будет отклик, масшт
YYDC — Pizza Powered iOSYDC — Pizza Powered iOS@YoungDaCode · канал · Технологии
243подписчиков150постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем