0Pricing
Swift Academy · Ders

Kapanış Yakalama Listeleri ve [weak self]

Kapanışların nesneleri güçlü biçimde yakalamasını önlemek için yakalama listelerini kullanın.

Kapanış Yakalama Listeleri ve [weak self], CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 4. 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.

Hoş Geldiniz

Kapatmalar, çevreleyen kapsamlarındaki değişkenleri yakalar. Yakalama listeleri (`[weak self]`, `[unowned self]`, `[value]`), bu yakalamaların tam olarak nasıl yapılacağını denetler.

Varsayılan Güçlü Yakalama

```swift var name = "Alice" let greet = { print("Hello, \(name)") } name = "Bob" greet() // "Hello, Bob" — closure sees current value ``` Kapatmalar varsayılan olarak değişkenlere yönelik *referansları* yakalar.

Yakalama Listelerinin Temelleri

```swift var count = 10 let snapshot = { [count] in print(count) } // captures value count = 99 snapshot() // 10 — snapshot of count at capture time ``` Bir değer türünü `[]` içinde listelemek, kapatma oluşturulduğu anda değeri kopyalar.

[weak self] Deseni

```swift class API { func fetch(completion: @escaping () -> Void) { ... } } class VC { func load() { api.fetch { [weak self] in guard let self else { return } // self might be nil by now self.updateUI() } } } ```

guard let self ile Uzatılmış Yaşam Süresi

Swift 5.3+: `self` değerini gölgeleme yapmadan guard içinde yeniden bağlayabilirsiniz: ```swift { [weak self] in guard let self else { return } // 'self' is now strong within this block doA() doB() doC() } ```

[unowned self] Ne Zaman Güvenlidir

```swift button.addTarget(self, action: #selector(tap), for: .touchUpInside) // If the button's closure is guaranteed not to outlive self: let action: () -> Void = { [unowned self] in self.handleTap() } ```

Birden Çok Değeri Yakalama

```swift let base = 100 let multiplier = 2 let compute = { [base, multiplier] in base * multiplier } print(compute()) // 200 ``` Birden çok değeri aynı listede, aralarına virgül koyarak yakalayın.

Adlandırılmış Bağlarla Yakalama Listesi

```swift let myService = service // rename in capture list: let handler = { [service = myService] in service.process() } ``` Belirli bir anlık görüntüyü yeni bir ad altında yakalamak için kullanışlıdır.

Kaçan ve Kaçmayan Kapatmalar

• `@escaping` kapatma saklanabilir ve işlev döndükten sonra çağrılabilir → döngü riski taşır • Kaçmayan kapatma, işlev dönmeden önce çağrılır → döngü riski yoktur ```swift func apply(_ f: () -> Void) { f() } // non-escaping, no [weak] needed func later(_ f: @escaping () -> Void) { queue.async { f() } } // escaping ```

Yakalama Sorunlarında Hata Ayıklama

Bir döngüden şüpheleniyorsanız: 1. Sınıfa `deinit { print("deallocated") }` ekleyin 2. Ekrandan ayrılın veya örneği nil değerine ayarlayın 3. deinit çıktısı görünmüyorsa → döngü vardır Ardından o sınıftaki kapatmalara `[weak self]` ekleyin.

Hızlı Kontrol

Yakalama listesinde `[weak self]` kullanmak ne yapar?

Özet

Temel çıkarımlar: • Kapatmalar varsayılan olarak referansları yakalar • `[value]` yakalama listesi, değer türlerini oluşturulma anında kopyalar • `[weak self]` — saklamaz, otomatik olarak nil olur, `guard let self` kullanın • `[unowned self]` — saklamaz, nil değerine karşı güvenli değildir • `@escaping` kapatmaların yakalama listelerine ihtiyacı vardır; kaçmayan kapatmalarda genellikle gerekmez Kurs tamamlandı! Sonraki konu: Swift'te işlevsel programlama.

Sıkça Sorulan Sorular

“Kapanış Yakalama Listeleri ve [weak self]” dersi ücretsiz mi?

Evet — “Kapanış Yakalama Listeleri ve [weak self]” 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.

“Kapanış Yakalama Listeleri ve [weak self]” dersinde ne öğreneceğim?

Kapanışların nesneleri güçlü biçimde yakalamasını önlemek için yakalama listelerini kullanı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 4. dersidir.

“Kapanış Yakalama Listeleri ve [weak self]” 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. ARC Başvuruları Nasıl Sayar
  2. Başvuru Döngüleri: Nedenleri ve Tespiti
  3. weak ve unowned Başvurular
  4. Kapanış Yakalama Listeleri ve [weak self]
← Swift Academy Sayfasına Dön