Herberekening van body beperken
Verminder onnodige herberekeningen van views.
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 changesWerk 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 arrayStabiele 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 schemeLuie 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.
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
- View-identiteit begrijpen
- Herberekening van body beperken
- Equatable views en @State-scope
- Profileren met het SwiftUI-instrument