Equatable Görünümler ve @State Kapsamı
Geçersiz kılmayı sınırlamak için durumu daraltın.
Equatable Görünümler ve @State Kapsamı, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.
Eşitlik İşlem Atlamayı Sağlar
SwiftUI bir görünümün girdilerinin değişmediğini kanıtlayabilirse görünümü yeniden oluşturmayı atlayabilir. Bir görünümü Equatable yapmak, SwiftUI'ya karar vermesi için kesin bir yol sunar.
Equatable ile Uyumlu Hâle Getirme
Görünümünüzü Equatable ile uyumlu hâle getirin; SwiftUI eski ve yeni değerleri karşılaştırır. Değerler eşitse gövdeyi atlar.
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
Türün çağrı noktalarını her yerde değiştirmeden, karşılaştırmaya dayalı atlamayı istemek için eşitlenebilir herhangi bir görünümü .equatable() ile de sarmalayabilirsiniz.
Badge(count: total)
.equatable()Eşitlenebilirlik Ne Zaman Yararlıdır
Eşitlenebilirlik, karşılaştırılması ucuz ancak gövdeleri pahalı olan görünümlerde çok işe yarar. Karşılaştırma maliyetinin yarar sağlaması için yeniden çizim maliyetinden çok daha düşük olması gerekir.
Karşılaştırma Maliyeti Tuzağı
== işleminiz kendi başına pahalıysa (büyük dizileri derinlemesine karşılaştırmak gibi), atlamaya çalıştığınız yeniden çizimden daha pahalıya mal olabilir. Yalnızca ucuz ve belirleyici alanları karşılaştırın.
static func == (a: Self, b: Self) -> Bool {
a.id == b.id && a.version == b.version // cheap fields
}Varsayılan Sentezlenmiş Eşitlenebilirlik
Saklanan tüm özellikler eşitlenebilirse Swift, == işlemini sentezleyebilir. Ancak kapanımlar ve bazı türler eşitlenemez; bu nedenle onları yok sayan özel bir uygulamaya ihtiyaç duyabilirsiniz.
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) }
}@State Kapsamını Daraltma
Çok üst düzeyde tutulan durum, altındaki her şeyin yeniden çizilmesine neden olur. Değişikliklerin kullanıcı arayüzünün olabildiğince küçük bir bölümünü etkilemesi için @State'i onu sahiplenen en küçük görünüme taşıyın.
// 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") }
}Durumu Yalnızca Paylaşıldığında Üst Düzeye Taşıma
Durumu yalnızca birden çok görünümün gerçekten ihtiyaç duyduğu zaman üst düzeye taşıyın. Aksi hâlde yerel durum, yeniden çizimin etki alanını küçük tutar.
Güncellemeleri Yerelleştirmek İçin Alt Görünümleri Ayırma
Sık değişen bir parçayı kendi görünümüne ayırmak, yeniden değerlendirmeyi o görünümle sınırlar ve kardeş görünümleri olduğu gibi bırakır.
struct LiveClock: View {
@State private var now = Date()
var body: some View { Text(now, style: .time) }
}Bağlamalar ve Kapsam
Bir @Binding, alt görünümü üst görünümün durumuna bağlar. Tüm nesne yerine dar kapsamlı bir bağlama (tek bir alan) geçirmek, hangi değişikliklerin yayılacağını sınırlar.
struct NameField: View {
@Binding var name: String // narrow binding
var body: some View { TextField("Name", text: $name) }
}Eşitlenebilirliği Kapsamla Birleştirme
En güçlü sonuçlar teknikleri birleştirmekle elde edilir: tetikleyicileri azaltmak için durumu dar bir kapsamda tutmak ve yine de gerçekleşen yeniden çizimleri atlamak için Equatable kullanmak.
Hızlı Kontrol: Eşitlenebilir Görünümler
Eşitlenebilir görünümler ve durum kapsamı konusundaki anlayışınızı değerlendirin.
Özet: Eşitlenebilir Görünümler ve Durum Kapsamı
Bir görünümü Equatable yapmak (veya .equatable() kullanmak), değişmemiş yeniden çizimlerin SwiftUI tarafından atlanmasını sağlar. Bu, karşılaştırma işlemi yeniden çizimden çok daha ucuz olduğunda ve yalnızca belirleyici alanlar kullanıldığında yararlıdır.
@State'i onu sahiplenen en küçük görünümle sınırlandırın, dar kapsamlı bağlamalar geçirin ve sık değişen parçaları kendi görünümlerine ayırın. Dar bir durum kapsamını eşitlenebilirlikle birleştirmek, en az sayıda ve en ucuz yeniden çizimi sağlar.
Sıkça Sorulan Sorular
“Equatable Görünümler ve @State Kapsamı” dersi ücretsiz mi?
Evet — “Equatable Görünümler ve @State Kapsamı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.
“Equatable Görünümler ve @State Kapsamı” dersinde ne öğreneceğim?
Geçersiz kılmayı sınırlamak için durumu daraltın. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Swift Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Equatable Görünümler ve @State Kapsamı” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Görünüm Kimliğini Anlama
- Body Yeniden Değerlendirmelerini En Aza İndirme
- Equatable Görünümler ve @State Kapsamı
- SwiftUI Instrument ile Profil Oluşturma