0Pricing
Swift Academy · Lektion

Neuberechnung von Body minimieren

Reduzieren Sie unnötige Neuberechnungen von Views.

Neuberechnung von Body minimieren ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

body wird häufig neu berechnet

SwiftUI ruft den body einer Ansicht auf, sobald sich ihre Eingaben ändern. Ein aufwendiger oder zu stark verknüpfter body wird zu häufig neu berechnet und beeinträchtigt dadurch die Performance.

Was eine Neuberechnung auslöst

Ein body wird erneut ausgeführt, wenn sich ein von ihm gelesener Wert aus @State, @Binding, einem beobachteten Objekt oder der Umgebung ändert – oder wenn das übergeordnete Element neue Werte übergibt.

struct Row: View {
    let title: String // changes -> body re-runs
    var body: some View { Text(title) }
}

Beobachtungen eingrenzen

Wenn eine Ansicht ein großes Modell vollständig liest, wird ihr body bei jeder Änderung dieses Modells erneut ausgeführt. Übergeben Sie nur die konkreten Werte, die die Ansicht benötigt.

// Instead of passing the whole model:
struct Price: View {
    let amount: Decimal // narrow input
    var body: some View { Text(amount, format: .currency(code: "USD")) }
}

Große Ansichten aufteilen

Teilen Sie einen übergroßen body in kleine Unteransichten auf. SwiftUI wertet dann nur die Unteransichten neu aus, deren Eingaben sich tatsächlich geändert haben, nicht den gesamten Bildschirm.

struct Screen: View {
    var body: some View {
        VStack {
            Header()   // re-runs only if its inputs change
            ItemList()
            Footer()
        }
    }
}

Observable und Beobachtung auf Feldebene

Mit dem @Observable-Makro verfolgt SwiftUI, welche genauen Eigenschaften eine Ansicht liest. Eine Ansicht, die nur model.name liest, ignoriert Änderungen an model.count.

@Observable final class Model {
    var name = ""
    var count = 0
}
// A view reading only name won’t re-run when count changes

Arbeit im body vermeiden

Der body sollte die Benutzeroberfläche kostengünstig beschreiben. Aufwendige Berechnungen wie Sortieren und Filtern gehören in das Modell oder eine gecachte Eigenschaft und sollten nicht bei jedem body-Aufruf erneut ausgeführt werden.

// Bad: sort inside body (runs every recompute)
// Good: sort once in the model, expose sorted array

Stabile Closures und Eingaben

Wenn Sie bei jedem Rendern ein neu erstelltes Array oder eine neue Closure übergeben, können Sie SwiftUIs Gleichheitsprüfungen unwirksam machen. Lagern Sie stabile Werte aus, damit Eingaben bei Neuberechnungen als gleich erkannt werden.

// Hoist constants out of body
private let columns = [GridItem(.flexible())]

Vorsicht bei aufwendigen Initialisierern

Der init einer Ansicht kann viele Male ausgeführt werden. Vermeiden Sie dort aufwendige Arbeit, da SwiftUI häufig Ansichtswerte erstellt, auch wenn diese nicht gerendert werden.

struct Card: View {
    init(_ item: Item) { /* keep this trivial */ }
    var body: some View { Text("Card") }
}

Umgebungswerte verursachen Aktualisierungen

Wenn eine Ansicht einen Umgebungswert liest, abonniert sie diesen. Lesen Sie Umgebungswerte nur dort, wo sie benötigt werden, und zwar in der kleinstmöglichen Unteransicht, um den Umfang der Neuberechnung zu begrenzen.

@Environment(\.colorScheme) private var scheme

Faule Container

Verwenden Sie LazyVStack/LazyHStack und List, damit nicht sichtbare Zeilen erst bei Bedarf erstellt werden. So reduzieren Sie bei großen Collections die Anzahl der body-Aufrufe.

ScrollView {
    LazyVStack {
        ForEach(items) { RowView(item: $0) }
    }
}

Messen, dann optimieren

Raten Sie nicht, welcher body besonders häufig ausgeführt wird. Verwenden Sie das SwiftUI Instrument, um Ansichten mit einer hohen Anzahl von body-Auswertungen zu finden, und wenden Sie diese Techniken dort an.

Kurzer Test: Neuberechnung

Testen Sie Ihr Verständnis der Neuberechnung von body.

Zusammenfassung: Neuberechnungen von body minimieren

Bodies werden neu ausgeführt, wenn sich ihre Eingaben ändern. Übergeben Sie daher nur die benötigten Werte, teilen Sie große Ansichten in kleine Unteransichten auf und nutzen Sie die Beobachtung auf Feldebene mit @Observable. Halten Sie Bodies und Initialisierer kostengünstig, lagern Sie stabile Eingaben aus, lesen Sie Umgebungswerte sparsam und verwenden Sie faule Container für große Collections.

Bestätigen Sie Hotspots immer mit dem SwiftUI Instrument, bevor Sie optimieren.

Häufig gestellte Fragen

Ist die Lektion „Neuberechnung von Body minimieren“ kostenlos?

Ja — der vollständige Text von „Neuberechnung von Body minimieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Neuberechnung von Body minimieren“?

Reduzieren Sie unnötige Neuberechnungen von Views. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Neuberechnung von Body minimieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. View-Identität verstehen
  2. Neuberechnung von Body minimieren
  3. Equatable Views und @State-Sichtbarkeit
  4. Profiling mit dem SwiftUI-Instrument
← Zurück zu Swift Academy