0Pricing
Swift Academy · Ders

weak ve unowned Başvurular

Döngüleri kırmak için weak (Optional) ile unowned (non-Optional) arasında seçim yapın.

weak ve unowned Başvurular, 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.

Hoş Geldiniz

Tutma döngülerini kırmak, ARC sayısını artırmayan referanslar gerektirir. Swift bunun için iki seçenek sunar: `weak` (isteğe bağlıdır ve otomatik olarak sıfırlanır) ve `unowned` (isteğe bağlı değildir, nil olması durumunda güvenli değildir).

weak Referansları

```swift class Owner { var pet: Pet? } class Pet { weak var owner: Owner? } // does not retain var o: Owner? = Owner() var p: Pet? = Pet() o?.pet = p p?.owner = o o = nil // Owner deinit — p.owner becomes nil automatically ```

weak Her Zaman İsteğe Bağlıdır

```swift class View { weak var delegate: ViewDelegate? } ``` `weak` bir `var` ve isteğe bağlı olmak zorundadır — başvurulan nesne bellekten kaldırıldığında Swift onu otomatik olarak sıfırlar.

unowned Referansları

```swift class Customer { var card: CreditCard? } class CreditCard { unowned let customer: Customer // card always has a customer init(customer: Customer) { self.customer = customer } } ``` `unowned` nesneyi saklamaz ve isteğe bağlı değildir — başvurulan nesnenin bu nesneden daha uzun süre yaşayacağını garanti edersiniz.

weak ve unowned Arasında Seçim

| Senaryo | Kullanım | |---|---| | Başvurulan nesne nil olabilir | `weak` | | Başvurulan nesne her zaman bu nesneden daha uzun yaşar | `unowned` | | Emin değilseniz | `weak` (daha güvenli) |

unowned'a Nesne Bellekten Kaldırıldıktan Sonra Erişme

```swift var customer: Customer? = Customer() var card = CreditCard(customer: customer!) customer = nil print(card.customer.name) // 💥 crash — unowned is dangling ``` Başvurulan nesne bellekten kaldırıldıktan sonra `unowned` değerine asla erişmeyin.

[weak self] Kapatmalarda

```swift class VC { func load() { api.fetch { [weak self] data in guard let self else { return } self.render(data) } } } ``` `[weak self]`, Swift'teki en yaygın tutma döngüsü düzeltmesidir.

[unowned self] Kapatmalarda

```swift class Session { var onComplete: (() -> Void)? init() { onComplete = { [unowned self] in // self always outlives closure self.finish() } } } ``` `[unowned self]` seçeneğini yalnızca kapatma çalıştığında `self` değerinin nil olmayacağından kesinlikle eminseniz kullanın.

Otomatik Sıfırlanmayı Gözlemleme

```swift class Timer { weak var delegate: TimerDelegate? } var d: TimerDelegate? = ConcreteDelegate() let t = Timer() t.delegate = d d = nil print(t.delegate) // nil — automatically zeroed ```

Temsilci Deseni İçin En İyi Uygulama

Temsilci özelliklerini her zaman `weak` olarak bildirin: ```swift protocol MyDelegate: AnyObject { func didUpdate() } class MyView { weak var delegate: MyDelegate? } ``` Protokollerle `weak` kullanabilmek için `AnyObject` kısıtlaması gerekir.

Hızlı Kontrol

Başvurulan nesne bellekten kaldırıldığında hangi referans türü otomatik olarak `nil` değerine ayarlanır?

Özet

Temel çıkarımlar: • `weak` — isteğe bağlı, otomatik olarak sıfırlanır, güvenlidir • `unowned` — isteğe bağlı değildir, başvurulan nesnenin daha uzun yaşayacağı garanti edilir, yanlışsa çöker • Temsilci desenleri: `AnyObject` kısıtlamasıyla her zaman `weak var delegate: Protocol?` kullanın • Kapatmalar: `[weak self]` standart desendir; içinde `guard let self` kullanın • Emin olmadığınızda `unowned` yerine `weak` seçin Sonraki konu: kapatma yakalama listeleri.

Sıkça Sorulan Sorular

“weak ve unowned Başvurular” dersi ücretsiz mi?

Evet — “weak ve unowned Başvurular” 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.

“weak ve unowned Başvurular” dersinde ne öğreneceğim?

Döngüleri kırmak için weak (Optional) ile unowned (non-Optional) arasında seçim yapı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.

“weak ve unowned Başvurular” 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