Body Yeniden Değerlendirmelerini En Aza İndirme
Gereksiz görünüm yeniden hesaplamalarını azaltın.
Body Yeniden Değerlendirmelerini En Aza İndirme, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. 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.
body Sık Sık Yeniden Hesaplanır
SwiftUI, girdileri değiştiğinde görünümün body değerini çağırır. Ağır veya çok fazla bağlantıya sahip bir body gereğinden sık yeniden hesaplanarak performansı düşürür.
Yeniden Değerlendirmeyi Ne Tetikler?
Bir body, okuduğu herhangi bir @State, @Binding, gözlemlenen nesne veya ortam değeri değiştiğinde ya da üst görünümü yeni değerler ilettiğinde yeniden çalışır.
struct Row: View {
let title: String // changes -> body re-runs
var body: some View { Text(title) }
}Gözlemlediklerinizi Sınırlandırın
Bir görünüm büyük bir modelin tamamını okursa, o modeldeki herhangi bir değişiklik body'sinin yeniden çalışmasına neden olur. Yalnızca görünümün ihtiyaç duyduğu belirli değerleri iletin.
// Instead of passing the whole model:
struct Price: View {
let amount: Decimal // narrow input
var body: some View { Text(amount, format: .currency(code: "USD")) }
}Büyük Görünümleri Bölme
Devasa bir body'yi küçük alt görünümlere ayırın. SwiftUI, ekranın tamamını değil, yalnızca girdileri gerçekten değişen alt görünümleri yeniden değerlendirir.
struct Screen: View {
var body: some View {
VStack {
Header() // re-runs only if its inputs change
ItemList()
Footer()
}
}
}Observable ve Alan Düzeyinde İzleme
@Observable makrosuyla SwiftUI, görünümün okuduğu tam özellikleri izler. Yalnızca model.name okuyan bir görünüm, model.count değişikliklerini yok sayar.
@Observable final class Model {
var name = ""
var count = 0
}
// A view reading only name won’t re-run when count changesbody İçinde Çalışma Yapmaktan Kaçının
body, kullanıcı arayüzünü düşük maliyetle açıklamalıdır. Ağır hesaplamalar (sıralama, filtreleme) modele veya önbelleğe alınmış bir özelliğe aittir; her body çağrısında yeniden hesaplanmamalıdır.
// Bad: sort inside body (runs every recompute)
// Good: sort once in the model, expose sorted arrayKararlı Kapanışlar ve Girdiler
Her çizimde yeni oluşturulmuş bir dizi veya kapanış iletmek, SwiftUI'nin eşitlik denetimlerini etkisiz kılabilir. Yeniden hesaplamalar arasında girdilerin eşit karşılaştırılabilmesi için kararlı değerleri dışarı taşıyın.
// Hoist constants out of body
private let columns = [GridItem(.flexible())]Maliyetli Başlatıcılara Dikkat
Bir görünümün init yöntemi birçok kez çalışabilir. Ağır işlerden kaçının; SwiftUI, çizimese bile görünüm değerlerini sık sık oluşturur.
struct Card: View {
init(_ item: Item) { /* keep this trivial */ }
var body: some View { Text("Card") }
}Ortam Okumalarının Güncelleme Maliyeti
Bir ortam değerini okumak, görünümü bu değere abone eder. Yeniden değerlendirme kapsamını sınırlamak için ortam değerlerini yalnızca gerektiği yerde, en küçük alt görünüm içinde okuyun.
@Environment(\.colorScheme) private var schemeLazy Kapsayıcılar
LazyVStack/LazyHStack ve List kullanarak ekran dışındaki satırların gerekene kadar oluşturulmamasını sağlayın; böylece büyük koleksiyonlarda body çağrılarını azaltın.
ScrollView {
LazyVStack {
ForEach(items) { RowView(item: $0) }
}
}Ölçün, Sonra İyileştirin
Hangi body'nin yoğun çalıştığını tahmin etmeyin. Body değerlendirme sayısı yüksek görünümleri bulmak için SwiftUI Aracı'nı kullanın ve bu teknikleri orada uygulayın.
Kısa Kontrol: Yeniden Değerlendirme
body'nin yeniden değerlendirilmesi konusundaki anlayışınızı sınayın.
Özet: body Yeniden Değerlendirmesini En Aza İndirme
Girdileri değiştiğinde body'ler yeniden çalışır; bu nedenle dar kapsamlı değerler iletin, büyük görünümleri küçük alt görünümlere bölün ve @Observable alan düzeyinde izlemeye güvenin. body'leri ve başlatıcıları düşük maliyetli tutun, kararlı girdileri dışarı taşıyın, ortam değerlerini en az düzeyde okuyun ve büyük koleksiyonlar için lazy kapsayıcılar kullanın.
İyileştirme yapmadan önce yoğun çalışan noktaları her zaman SwiftUI Aracı ile doğrulayın.
Sıkça Sorulan Sorular
“Body Yeniden Değerlendirmelerini En Aza İndirme” dersi ücretsiz mi?
Evet — “Body Yeniden Değerlendirmelerini En Aza İndirme” 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.
“Body Yeniden Değerlendirmelerini En Aza İndirme” dersinde ne öğreneceğim?
Gereksiz görünüm yeniden hesaplamalarını azaltı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 2. dersidir.
“Body Yeniden Değerlendirmelerini En Aza İndirme” 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