Swift Academy · Les

Herberekening van body beperken

Verminder onnodige herberekeningen van views.

Les 2 van 413 stappen

Herberekening van body beperken is een gratis Swift Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Swift Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Swift Academy bevat in totaal 4 lessen.

Body wordt vaak opnieuw berekend

SwiftUI roept de body van een weergave aan wanneer de invoer ervan verandert. Een zware of te sterk gekoppelde body wordt te vaak opnieuw berekend, wat de prestaties schaadt.

Wat een nieuwe evaluatie veroorzaakt

Een body wordt opnieuw uitgevoerd wanneer een gelezen @State, @Binding, geobserveerd object of omgevingswaarde verandert, of wanneer de bovenliggende weergave nieuwe waarden doorgeeft.

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

Beperk wat je observeert

Als een weergave een volledig groot model leest, wordt de body opnieuw uitgevoerd bij elke wijziging in dat model. Geef alleen de specifieke waarden door die de weergave nodig heeft.

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

Grote weergaven opsplitsen

Splits een enorme body op in kleine subweergaven. SwiftUI evalueert dan alleen de subweergaven waarvan de invoer daadwerkelijk is veranderd, niet het hele scherm.

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

Observable en bijhouden op veldniveau

Met de macro @Observable houdt SwiftUI bij welke exacte eigenschappen een weergave leest. Een weergave die alleen model.name leest, negeert wijzigingen in model.count.

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

Werk in body vermijden

De body moet de gebruikersinterface op een goedkope manier beschrijven. Zware berekeningen, zoals sorteren en filteren, horen in het model of in een opgeslagen eigenschap, niet in een berekening bij elke body-aanroep.

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

Stabiele closures en invoer

Bij elke weergave een nieuw gemaakte array of closure doorgeven kan de gelijkheidscontroles van SwiftUI omzeilen. Verplaats stabiele waarden naar een hoger niveau, zodat de invoer bij nieuwe berekeningen gelijk blijft.

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

Pas op met dure initialisaties

De init van een weergave kan vaak worden uitgevoerd. Vermijd zwaar werk daarin; SwiftUI maakt vaak weergavewaarden aan, ook als deze niet worden weergegeven.

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

Omgevingswaarden uitlezen veroorzaakt updates

Als je een omgevingswaarde uitleest, abonneert de weergave zich daarop. Lees omgevingswaarden alleen waar dat nodig is, in de kleinst mogelijke subweergave, om het bereik van nieuwe evaluaties te beperken.

@Environment(\.colorScheme) private var scheme

Luie containers

Gebruik LazyVStack/LazyHStack en List, zodat rijen buiten beeld pas worden opgebouwd wanneer dat nodig is. Zo beperk je het aantal body-aanroepen voor grote verzamelingen.

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

Eerst meten, dan optimaliseren

Gok niet welke body zwaar wordt belast. Gebruik de SwiftUI Instrument om weergaven met veel body-evaluaties te vinden en pas daar deze technieken toe.

Korte controle: opnieuw evalueren

Test je begrip van het opnieuw evalueren van body.

Samenvatting: opnieuw evalueren van body beperken

Een body wordt opnieuw uitgevoerd wanneer de invoer verandert. Geef daarom beperkte waarden door, splits grote weergaven op in kleine subweergaven en benut het bijhouden op veldniveau van @Observable. Houd bodies en initialisaties goedkoop, verplaats stabiele invoer naar een hoger niveau, lees omgevingswaarden zo beperkt mogelijk uit en gebruik luie containers voor grote verzamelingen.

Controleer zwaarbelaste plekken altijd met de SwiftUI Instrument voordat je optimaliseert.

Gratis beginnen

Leer Swift met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
122
Lessen
409

Veelgestelde vragen

Is de les “Herberekening van body beperken” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Swift Academy, waaronder “Herberekening van body beperken”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Swift Academy bevat in totaal 4 lessen.

Wat leer ik in “Herberekening van body beperken”?

Verminder onnodige herberekeningen van views. Je oefent met Swift Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Swift Academy te beginnen?

Ervaring vooraf is niet nodig. Swift Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Herberekening van body beperken”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Swift Academy?

Ja. Elke les over Swift Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. View-identiteit begrijpen
  2. Herberekening van body beperken
  3. Equatable views en @State-scope
  4. Profileren met het SwiftUI-instrument
← Terug naar Swift Academy