0Pricing
Swift Academy · Ders

Başvuru Döngüleri: Nedenleri ve Tespiti

Instruments ile nesneler ve kapanışlar arasındaki başvuru döngülerini belirleyin.

Başvuru Döngüleri: Nedenleri ve Tespiti, 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.

Hoş Geldiniz

Güçlü referans döngüsü, iki veya daha fazla nesnenin birbirlerine güçlü referanslar tutması ve ARC'nin sayıyı hiçbir zaman sıfıra indirmesini engellemesi durumunda oluşur — bu da bellek sızıntısına yol açar.

Basit İki Nesneli Döngü

```swift class Owner { var pet: Pet? } class Pet { var owner: Owner? } var o: Owner? = Owner() var p: Pet? = Pet() o?.pet = p // Owner → Pet (strong) p?.owner = o // Pet → Owner (strong) o = nil; p = nil // Neither deinit called — cycle! ```

Üst-Alt Döngüsü

```swift class Node { var children: [Node] = [] var parent: Node? // strong → cycle with parent } let root = Node() let child = Node() root.children.append(child) child.parent = root // cycle ```

Kapanış Yakalama Döngüsü

```swift class ViewController { var onComplete: (() -> Void)? func setup() { onComplete = { // closure strongly captures self self.doWork() // ← cycle! } } } ```

Temsilci Örüntüsü Döngüsü

```swift protocol TaskDelegate: AnyObject { func didFinish() } class Task { var delegate: TaskDelegate? // if strong → potential cycle } class Manager: TaskDelegate { var task = Task() init() { task.delegate = self } // Manager → Task → Manager } ```

Instruments ile Algılama

Xcode Instruments > Sızıntılar'ı kullanın: 1. Uygulamayı Instruments'ta çalıştırın 2. Sızıntılar aracına tıklayın 3. Kırmızı işaretler sızdırılmış nesneleri gösterir 4. Referans grafiğini görmek için ayrıntılara inin Alternatif olarak: `deinit { print(...) }` ayarlayın ve çalışıp çalışmadığını kontrol edin.

Xcode Bellek Grafiğiyle Algılama

Xcode hata ayıklayıcısında: Hata Ayıkla > Bellek Grafiği Hata Ayıklayıcısı. Sızdırılmış bir nesneye tıklayarak referans zincirini görün — döngü grafikte kapalı bir halka olarak görünür.

Yaygın Döngü Örüntüleri

• Temsilcinin temsilciyi güçlü biçimde saklaması • Kapanışın `self`'i güçlü biçimde yakalaması • Üst-altın çift yönlü güçlü referansları • NotificationCenter gözlemcisinin `self`'i yakalayan bir kapanışı tutması • Zamanlayıcının hedefinin `self` olması (güçlü)

Zamanlayıcı Tutma Döngüsü

```swift class Poller { var timer: Timer? func start() { timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [weak self] _ in self?.poll() // weak self breaks cycle } } deinit { timer?.invalidate() } } ```

NotificationCenter Döngüsü

```swift class Listener { var token: NSObjectProtocol? init() { token = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive, object: nil, queue: .main) { [weak self] _ in self?.refresh() } } deinit { NotificationCenter.default.removeObserver(token!) } } ```

Hızlı Kontrol

ARC'de tutma döngüsü nedir?

Özet

Temel çıkarımlar: • Tutma döngüleri: karşılıklı güçlü referanslar → hiçbiri bellekten kaldırılmaz • Yaygın olarak şunlarda görülür: temsilciler, kapatmalar, üst-alt iki yönlü bağlantıları • Instruments Leaks veya Xcode Memory Graph Debugger ile algılanır • `weak` veya `unowned` referanslarıyla düzeltilir • Zamanlayıcılar ve NotificationCenter da döngülere neden olur — `[weak self]` ile kırılır Sonraki konu: weak ve unowned referansları.

Sıkça Sorulan Sorular

“Başvuru Döngüleri: Nedenleri ve Tespiti” dersi ücretsiz mi?

Evet — “Başvuru Döngüleri: Nedenleri ve Tespiti” 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.

“Başvuru Döngüleri: Nedenleri ve Tespiti” dersinde ne öğreneceğim?

Instruments ile nesneler ve kapanışlar arasındaki başvuru döngülerini belirleyin. 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.

“Başvuru Döngüleri: Nedenleri ve Tespiti” 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