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

SwiftUI: как отследить, что вызывает обновление View

Когда View в SwiftUI неожиданно перерисовывается, это может сбивать с толку. Но есть простой способ понять, что именно вызвало обновление.

Добавьте в body вашей View:


var body: some View {
let _ = Self._printChanges()
// Ваш код
}

Данный код отобразит в консоли:


  • Какое свойство (@State, @ObservedObject и т.д.) вызвало обновление View.

  • Было ли обновление из-за изменения самой вьюхи.

  • Была ли смена её идентичности (@identity).

Альтернативные способы отладки:



onAppear + print:

Text("Привет")
.onAppear {
print("View появилась")
}


Кастомный модификатор для вывода в консоль:

extension View {
func debugPrint(_ text: String) -> Self {
print(text)
return self
}
}

// Использование:
Circle()
.fill(.green)
.debugPrint("Круг отрисован")

Вывод:


  • Self._printChanges() - лучший способ понять, почему перерисовывается View.

  • onAppear и кастомные модификаторы помогут отследить жизненный цикл вью.


Вот так просто можно понять, почему вьюхи в SwiftUI вдруг решили перерисоваться.
01.08.2025 15 412