View Equatable dan Cakupan @State
Persempit state untuk membatasi invalidasi.
View Equatable dan Cakupan @State adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
Kesetaraan Dapat Menghindari Pemrosesan
Jika SwiftUI dapat membuktikan bahwa masukan suatu tampilan tidak berubah, SwiftUI dapat melewati proses penggambaran ulangnya. Menjadikan tampilan Equatable memberi SwiftUI cara yang tepat untuk mengambil keputusan.
Menerapkan Equatable
Terapkan Equatable pada tampilan Anda, lalu SwiftUI akan membandingkan nilai lama dan baru. Jika keduanya sama, SwiftUI melewati body.
struct Badge: View, Equatable {
let count: Int
var body: some View { Text("\(count)") }
static func == (a: Badge, b: Badge) -> Bool {
a.count == b.count
}
}EquatableView
Anda juga dapat membungkus tampilan Equatable apa pun dengan .equatable() untuk meminta pelewatan berbasis perbandingan tanpa perlu mengubah pemanggilan tipe di seluruh kode.
Badge(count: total)
.equatable()Kapan Equatable Membantu
Equatable sangat berguna untuk tampilan dengan masukan yang murah dibandingkan tetapi body yang mahal untuk dievaluasi. Biaya perbandingan harus jauh lebih kecil daripada biaya penggambaran agar cara ini bermanfaat.
Jebakan Biaya Perbandingan
Jika == Anda sendiri mahal, misalnya perbandingan mendalam terhadap array besar, biayanya dapat melebihi penggambaran yang ingin Anda lewati. Bandingkan hanya bidang yang murah dan menentukan.
static func == (a: Self, b: Self) -> Bool {
a.id == b.id && a.version == b.version // cheap fields
}Equatable Bawaan yang Dibuat Otomatis
Jika semua properti tersimpan bersifat Equatable, Swift dapat membuat == secara otomatis. Namun, closure dan beberapa tipe tidak bersifat Equatable, jadi Anda mungkin memerlukan implementasi khusus yang mengabaikannya.
struct Card: View, Equatable {
let title: String
let onTap: () -> Void // not Equatable
static func == (a: Card, b: Card) -> Bool { a.title == b.title }
var body: some View { Text(title) }
}Mempersempit Cakupan @State
Status yang ditempatkan terlalu tinggi akan menggambar ulang semua bagian di bawahnya. Turunkan @State ke tampilan terkecil yang memilikinya agar perubahan memengaruhi bagian antarmuka sesedikit mungkin.
// Move toggle state into the row that uses it
struct Row: View {
@State private var expanded = false
var body: some View { /* only this row re-renders */ Text("Row") }
}Mengangkat Status Hanya Saat Dipakai Bersama
Angkat status hanya jika beberapa tampilan benar-benar membutuhkannya. Jika tidak, status lokal menjaga dampak penggambaran ulang tetap kecil.
Mengekstrak Tampilan Turunan untuk Melokalkan Pembaruan
Mengekstrak bagian yang sering berubah ke dalam tampilan tersendiri membatasi evaluasi ulang pada tampilan tersebut dan membiarkan tampilan saudaranya tetap tidak tersentuh.
struct LiveClock: View {
@State private var now = Date()
var body: some View { Text(now, style: .time) }
}Pengikatan dan Cakupan
Sebuah @Binding menghubungkan tampilan anak ke status milik tampilan induk. Dengan meneruskan pengikatan yang sempit, yaitu satu bidang, alih-alih seluruh objek, Anda membatasi perubahan yang diteruskan.
struct NameField: View {
@Binding var name: String // narrow binding
var body: some View { TextField("Name", text: $name) }
}Menggabungkan Equatable dengan Cakupan
Hasil terbaik diperoleh dengan menggabungkan beberapa teknik: mempersempit penempatan status untuk mengurangi pemicu, lalu menggunakan Equatable untuk melewati penggambaran ulang yang masih terjadi.
Pemeriksaan Singkat: Tampilan Equatable
Uji pemahaman Anda tentang tampilan Equatable dan cakupan status.
Ringkasan: Tampilan Equatable dan Cakupan Status
Menjadikan tampilan Equatable atau menggunakan .equatable() memungkinkan SwiftUI melewati penggambaran ulang untuk tampilan yang tidak berubah—hal ini bermanfaat jika perbandingan jauh lebih murah daripada penggambaran, dengan hanya menggunakan bidang yang menentukan.
Persempit @State ke tampilan terkecil yang memilikinya, teruskan pengikatan yang sempit, dan ekstrak bagian yang sering berubah ke dalam tampilan tersendiri. Menggabungkan cakupan status yang ketat dengan Equatable menghasilkan penggambaran ulang yang paling sedikit dan paling murah.
Belajar Swift dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 122
- Pelajaran
- 409
Pertanyaan yang Sering Diajukan
Apakah pelajaran “View Equatable dan Cakupan @State” gratis?
Ya — teks lengkap “View Equatable dan Cakupan @State” 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 “View Equatable dan Cakupan @State”?
Persempit state untuk membatasi invalidasi. 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 3 dari 4.
Berapa lama pelajaran “View Equatable dan Cakupan @State” 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