Meminimalkan Evaluasi Ulang Body
Kurangi perhitungan ulang view yang tidak diperlukan.
Meminimalkan Evaluasi Ulang Body adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.
body Sering Dihitung Ulang
SwiftUI memanggil body sebuah tampilan setiap kali masukannya berubah. body yang berat atau terlalu banyak keterkaitan akan dihitung ulang terlalu sering dan menurunkan performa.
Pemicu Evaluasi Ulang
body dijalankan ulang ketika @State, @Binding, objek yang diamati, atau nilai lingkungan apa pun yang dibacanya berubah—atau ketika induknya meneruskan nilai baru.
struct Row: View {
let title: String // changes -> body re-runs
var body: some View { Text(title) }
}Persempit Hal yang Diamati
Jika sebuah tampilan membaca seluruh model besar, setiap perubahan pada model tersebut akan menjalankan ulang body-nya. Teruskan hanya nilai spesifik yang dibutuhkan tampilan.
// Instead of passing the whole model:
struct Price: View {
let amount: Decimal // narrow input
var body: some View { Text(amount, format: .currency(code: "USD")) }
}Pisahkan Tampilan Besar
Pecah body yang sangat besar menjadi subtampilan kecil. SwiftUI hanya mengevaluasi ulang subtampilan yang masukannya benar-benar berubah, bukan seluruh layar.
struct Screen: View {
var body: some View {
VStack {
Header() // re-runs only if its inputs change
ItemList()
Footer()
}
}
}Pelacakan Observable Tingkat Bidang
Dengan makro @Observable, SwiftUI melacak properti persis yang dibaca sebuah tampilan. Tampilan yang hanya membaca model.name akan mengabaikan perubahan pada model.count.
@Observable final class Model {
var name = ""
var count = 0
}
// A view reading only name won’t re-run when count changesHindari Pekerjaan di dalam body
body seharusnya menjelaskan UI dengan biaya rendah. Perhitungan berat, seperti pengurutan dan penyaringan, sebaiknya berada di dalam model atau properti yang disimpan dalam tembolok, bukan dihitung ulang pada setiap pemanggilan body.
// Bad: sort inside body (runs every recompute)
// Good: sort once in the model, expose sorted arrayClosure dan Masukan yang Stabil
Meneruskan larik atau closure yang baru dibuat pada setiap perenderan dapat menggagalkan pemeriksaan kesetaraan SwiftUI. Angkat nilai yang stabil agar masukan dianggap sama pada setiap penghitungan ulang.
// Hoist constants out of body
private let columns = [GridItem(.flexible())]Waspadai Penginisialisasi yang Mahal
init sebuah tampilan dapat dijalankan berkali-kali. Hindari pekerjaan berat di sana; SwiftUI sering membuat nilai tampilan meskipun tidak merendernya.
struct Card: View {
init(_ item: Item) { /* keep this trivial */ }
var body: some View { Text("Card") }
}Pembacaan Lingkungan Memicu Pembaruan
Membaca nilai lingkungan membuat tampilan berlangganan kepadanya. Baca nilai lingkungan hanya di tempat yang diperlukan, dalam subtampilan terkecil, untuk membatasi cakupan evaluasi ulang.
@Environment(\.colorScheme) private var schemeContainer Tunda
Gunakan LazyVStack/LazyHStack dan List agar baris di luar layar tidak dibuat sebelum diperlukan, sehingga jumlah pemanggilan body untuk koleksi besar berkurang.
ScrollView {
LazyVStack {
ForEach(items) { RowView(item: $0) }
}
}Ukur, Lalu Optimalkan
Jangan menebak body mana yang paling banyak menggunakan waktu. Gunakan Instrumen SwiftUI untuk menemukan tampilan dengan jumlah evaluasi body yang tinggi, lalu terapkan teknik-teknik ini di sana.
Pemeriksaan Singkat: Evaluasi Ulang
Uji pemahaman Anda tentang evaluasi ulang body.
Ringkasan: Meminimalkan Evaluasi Ulang body
body dijalankan ulang ketika masukannya berubah, jadi teruskan nilai yang terbatas, pecah tampilan besar menjadi subtampilan kecil, dan manfaatkan pelacakan tingkat bidang dari @Observable. Pertahankan body dan penginisialisasi tetap ringan, angkat masukan yang stabil, baca nilai lingkungan seminimal mungkin, dan gunakan container tunda untuk koleksi besar.
Selalu konfirmasikan bagian yang paling banyak menggunakan waktu dengan Instrumen SwiftUI sebelum melakukan optimisasi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Meminimalkan Evaluasi Ulang Body” gratis?
Ya — teks lengkap “Meminimalkan Evaluasi Ulang Body” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Meminimalkan Evaluasi Ulang Body”?
Kurangi perhitungan ulang view yang tidak diperlukan. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Meminimalkan Evaluasi Ulang Body” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Memahami Identitas View
- Meminimalkan Evaluasi Ulang Body
- View Equatable dan Cakupan @State
- Membuat Profil dengan Instrumen SwiftUI