TGViewer
Мобильная разработка Мобильная разработка @mobi_dev · 13.1K subscribers
Post #4790 513
Почему @ObservedObject сбрасывает модель в SwiftUI

@ObservedObject следит за изменениями модели, полученной извне, но не хранит созданный внутри представления экземпляр. Когда состояние родителя меняется, SwiftUI может заново создать значение дочернего View. Вместе с ним появится новый CounterViewModel, а счётчик вернётся к нулю.

Если дочернее представление само создаёт модель, объявляйте её через @StateObject. SwiftUI сохранит экземпляр, пока считает представление тем же самым. Если модель создаёт родитель, он хранит её через @StateObject и передаёт ребёнку как @ObservedObject.

Для нового кода под iOS 17 и новее источник предлагает @Observable с @State, но правило владения остаётся тем же. Пример со сбрасывающимся счётчиком и варианты исправления приведены с кодом.
  • ❤ 1
More from @mobi_dev
  1. Oct 7, 2026Как нативные контролы SwiftUI меняются в iOS 26 без правок интерфейса Один бинарник, собра…
  2. Oct 7, 2026Как собрать стабильную пирамиду тестов для Flutter-приложения Руководство по тестированию…
  3. Oct 6, 2026Как отделить эффект Baseline Profiles от очистки запуска Android-приложения В Compose-прил…
  4. Oct 6, 2026Как внедрить Maestro в React Native и не дублировать E2E-тесты Команда Add Jam сравнила вн…
  5. Oct 6, 2026Как ускорить React Native-приложение с картой и Zustand На слабых Android-устройствах карт…
  6. Oct 3, 2026Android CLI получил Device Streaming для тестов на реальных смартфонах Google добавила в A…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →