0Pricing
Swift Academy · Ders

ARC temelleri: strong / weak / unowned

ARC başvuru sayımını ve bellek sızıntılarını önlemek için strong , weak ve unowned seçeneklerinin ne zaman kullanılacağını öğrenin.

ARC temelleri: strong / weak / unowned, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 3 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 3 dersten oluşur.

ARC bir dakikada

Swift, ARC (Otomatik Referans Sayımı) kullanır. Her strong referans, bir sınıf örneğinin sayısını artırır. Sayı sıfıra düştüğünde deinit çalışır ve bellek serbest bırakılır.

Varsayılan olarak strong

Strong varsayılandır. Son strong referansı ortadan kalktığında deinit çağrılır.

final class Person {
    let name: String
    init(_ name: String) { self.name = name; print("init:", name) }
    deinit { print("deinit:", name) }
}

var p: Person? = Person("Ada")
p = nil  // ARC count -> 0, triggers deinit

Döngü örneği

İki yönlü strong referanslar bir tutma döngüsü oluşturur. ARC bunları serbest bırakamaz ve bellek sızıntısı oluşur.

final class A {
    var b: B?
    deinit { print("A deinit") }
}
final class B {
    var a: A?
    deinit { print("B deinit") }
}

var a: A? = A()
var b: B? = B()
a?.b = b      // strong
b?.a = a      // strong

a = nil       // no deinit (cycle)
b = nil       // still no deinit (leak)

weak referansı

Döngüyü önlemek için taraflardan birini weak yapınız. Weak referanslar seçimlidir ve nesne serbest bırakıldığında otomatik olarak nil olur.

final class A2 {
    weak var b: B2?   // weak breaks the strong cycle
    deinit { print("A2 deinit") }
}
final class B2 {
    var a: A2?
    deinit { print("B2 deinit") }
}

var a2: A2? = A2()
var b2: B2? = B2()
a2?.b = b2   // weak
b2?.a = a2   // strong

a2 = nil     // A2 deinit runs
b2 = nil     // B2 deinit runs

unowned referansı

Başvurulan nesnenin bu referanstan daha uzun süre yaşayacağından eminseniz unowned kullanınız. Bu referans seçimli değildir ve nil olarak ayarlanmaz; nesne serbest bırakıldıktan sonra erişmek çökmeye neden olur, bu nedenle yaşam sürelerini garanti ediniz.

final class Customer {
    let name: String
    var card: CreditCard?
    init(_ name: String) { self.name = name }
    deinit { print("Customer deinit") }
}
final class CreditCard {
    unowned let owner: Customer   // never optional; owner must outlive card
    init(owner: Customer) { self.owner = owner }
    deinit { print("CreditCard deinit") }
}

var cust: Customer? = Customer("Lars")
cust!.card = CreditCard(owner: cust!)
cust = nil  // deallocates both (no cycle)

İpuçları ve kalıplar

İpuçları:

  • Varsayılan olarak strong kullanınız.
  • Döngüleri weak ile kırınız (temsilciler genellikle weak olur).
  • unowned yalnızca yaşam süresi garanti edildiğinde kullanınız (örneğin çocuk → ebeveyn).
  • Sınıflar referans türleridir; yapıların ve numaralandırmaların ARC kurallarına ihtiyacı yoktur.

weak ve unowned?

Kısa kontrol: weak ile unowned arasında ne zaman seçim yaparsınız?

Özet

Özet: Hiçbir strong referans kalmadığında ARC nesneleri serbest bırakır. Döngüleri weak (seçimli) veya unowned (yaşam süresi garanti) ile önleyiniz. Güvenli olan en sınırlı sahiplik türünü seçiniz.

Sıkça Sorulan Sorular

“ARC temelleri: strong / weak / unowned” dersi ücretsiz mi?

Evet — “ARC temelleri: strong / weak / unowned” 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 3 dersten oluşur.

“ARC temelleri: strong / weak / unowned” dersinde ne öğreneceğim?

ARC başvuru sayımını ve bellek sızıntılarını önlemek için strong , weak ve unowned seçeneklerinin ne zaman kullanılacağını öğrenin. 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, 3 dersinin 1. dersidir.

“ARC temelleri: strong / weak / unowned” 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 temelleri: strong / weak / unowned
  2. Saklama döngüleri ve weak/unowned ile kırma
  3. Paylaşımı azaltmak için değer türleri
← Swift Academy Sayfasına Dön