0Pricing
Swift Academy · Ders

Görünüm Kimliğini Anlama

SwiftUI'nin görünümleri nasıl karşılaştırıp yeniden kullandığını denetleyin.

Görünüm Kimliğini Anlama, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 1. 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.

Kimlik SwiftUI'yi Yönlendirir

SwiftUI, mevcut bir görünümü güncelleyip güncellemeyeceğine veya yeni bir görünüm oluşturup oluşturmayacağına karar vermek için her görünümü kimliği aracılığıyla izler.

Kimliği doğru belirlemek, doğruluk ve performans için en büyük etkendir.

İki Tür Kimlik

SwiftUI iki biçim kullanır: yapısal kimlik (bir görünümün görünüm ağacındaki konumu) ve açık kimlik (sizin atadığınız bir kimlik).

Yapısal Kimlik

Varsayılan olarak bir görünümün kimliği, hiyerarşide bulunduğu yerden gelir. Aşağıdaki if dalları, yapısal olarak birbirinden farklı iki görünüm oluşturur.

var body: some View {
    if isOn {
        Text("On")  // one identity
    } else {
        Text("Off") // a different identity
    }
}

Dallar Neden Durumu Kaybeder?

Her dal farklı bir yapısal kimlik olduğundan, dallar arasında geçiş yapmak ilk görünümü yok eder ve ikincisini oluşturur. İçindeki herhangi bir @State sıfırlanır.

if isExpanded {
    DetailView() // new instance each time the branch flips
} else {
    SummaryView()
}

id() ile Açık Kimlik

.id(_:) değiştiricisi açık kimlik atar. Kimliği değiştirmek, SwiftUI'ye "bu farklı bir görünüm" der ve yeni bir örnek ile durum sıfırlaması yapılmasını zorunlu kılar.

CounterView()
    .id(selectedTab) // new identity per tab

ForEach İçinde Kimlik

ForEach, her öğe için kararlı bir kimlik gerektirir. Kararlı bir kimliğe giden anahtar yolunu kullanın; değiştirilebilir koleksiyonlarda dizi dizinini hiçbir zaman kullanmayın.

ForEach(items, id: \.id) { item in
    RowView(item: item)
}

Dizin Kimliği Tuzağı

Değişen dizinlerde veya değerlerde id: \.self kullanmak, veriler değiştiğinde kimliklerin yeniden sıralanmasına neden olur; bu da hatalı animasyonlara ve kaybolan duruma yol açar.

// Risky if items reorder or values repeat:
// ForEach(0..<items.count, id: \.self) { ... }

Kimlik ve Animasyon

Animasyonlar, aynı kimliğin durumları arasında ara değerler hesaplar. Kimlik değişirse SwiftUI, akıcı bir animasyon yerine ekleme/kaldırma geçişi gerçekleştirir.

withAnimation {
    // same identity -> property animates
    // changed id     -> transition (fade/slide)
}

Koşullu Değiştiriciler Kimliği Değiştirir

Bir değiştiriciyi if içinde uygulamak, yapısal kimliği değiştirerek durumu sıfırlayabilir. Değiştiricinin değerini koşullu olarak hesaplayan tek bir görünümü tercih edin.

// Better: keep one identity
Text("Hi")
    .opacity(isHidden ? 0 : 1)
// Worse: branching creates two identities

AnyView Kimlik Bilgilerini Siler

Görünümleri AnyView içine sarmalamak, türlerini SwiftUI'den gizleyerek farkları verimli hesaplama yeteneğini zayıflatır. Mümkün olduğunda bunun yerine somut türler veya @ViewBuilder kullanın.

// Prefer @ViewBuilder over returning AnyView
@ViewBuilder
func content() -> some View {
    if flag { A() } else { B() }
}

Kararlı Kimlik = Kararlı Durum

Temel kural şudur: Durumun ve akıcı animasyonun korunmasını istiyorsanız kimliği kararlı tutun; gerçekten yeni bir başlangıç istediğinizde kimliği bilinçli olarak değiştirin.

Kısa Kontrol: Görünüm Kimliği

Görünüm kimliği konusundaki anlayışınızı sınayın.

Özet: Görünüm Kimliğini Anlama

SwiftUI, görünümleri yapısal olarak (ağaç konumuyla) ve açık olarak (.id ile) tanımlar. Kararlı kimlik, @State durumunu korur ve özelliklerin akıcı biçimde animasyonunu sağlar; kimliği değiştirmek durumu sıfırlar ve geçişleri tetikler.

ForEach için kararlı kimlikler verin, değiştirilebilir verilerde dizin kimliğinden kaçının, kimliği değiştiren dallanmaları en aza indirin ve somut bir türün kullanılabildiği yerlerde AnyView kullanmayın.

Sıkça Sorulan Sorular

“Görünüm Kimliğini Anlama” dersi ücretsiz mi?

Evet — “Görünüm Kimliğini Anlama” 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.

“Görünüm Kimliğini Anlama” dersinde ne öğreneceğim?

SwiftUI'nin görünümleri nasıl karşılaştırıp yeniden kullandığını denetleyin. 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 1. dersidir.

“Görünüm Kimliğini Anlama” 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

  1. Görünüm Kimliğini Anlama
  2. Body Yeniden Değerlendirmelerini En Aza İndirme
  3. Equatable Görünümler ve @State Kapsamı
  4. SwiftUI Instrument ile Profil Oluşturma
← Swift Academy Sayfasına Dön