Добавить объявление

Что такое @StateObject в SwiftUI? Чем @StateObject отличается от @State?

Особенности @StateObject:


  • Используется для классов (ObservableObject).

  • При обновлении View объект сохраняется.

  • Часто используется для ViewModel, сетевых сервисов и т.д.

  • Объект инициализируется один раз.

Пример использования @StateObject:


@StateObject var viewModel = MyViewModel()

Особенности @State:


  • Для простых значений: используется для примитивов (Int, String, Bool) и структур (Struct).

  • Локальное хранение: данные живут только внутри этой View и не предназначены для передачи в другие экраны.

  • Может инициализироваться и перезаписываться множество раз.

Пример использования @State:


@State private var value = 0

Главное отличие:


@StateObject - для сложных зависимостей, @State - для локальных данных View.

Важно:


  • Для дочерних View используйте @ObservedObject с @StateObject родителя.

  • @StateObject не теряет данные при обновлении интерфейса.
11.06.2025 14 375