Ответ
В SwiftUI жизненный цикл View декларативен и привязан к данным, а не к методам, как в UIKit. View — это функция от состояния (state). Основные фазы и модификаторы для реакции на них:
Ключевые модификаторы жизненного цикла:
-
.onAppear(perform:)Вызывается, когда View становится видимой в интерфейсе. Используется для начальной настройки, запуска анимаций или загрузки данных..onAppear { viewModel.loadData() startAnimation() } -
.onDisappear(perform:)Вызывается, когда View исчезает с экрана. Используется для очистки ресурсов, отмены подписок или остановки таймеров..onDisappear { viewModel.cancelRequests() stopTimer() } -
.task(priority:_:)Современная замена.onAppearдля асинхронных операций. Автоматически запускает асинхронную задачу при появлении View и отменяет её при исчезновении..task { // Асинхронная загрузка данных await viewModel.fetchData() }
Пример полного цикла:
struct ProfileView: View {
@StateObject var viewModel = ProfileViewModel()
var body: some View {
VStack {
Text("Hello, (viewModel.username)")
}
.onAppear { print("ProfileView appeared") }
.onDisappear { print("ProfileView disappeared") }
.task {
// Загрузка данных при появлении, отмена при исчезновении
await viewModel.loadUserData()
}
}
}
Принцип: SwiftUI автоматически создает, обновляет и уничтожает View при изменении связанных с ними данных (@State, @ObservedObject, @StateObject). Разработчик лишь описывает, что должно происходить в ключевые моменты (появление/исчезновение) с помощью модификаторов.