Sobes.tech
Junior — Middle

Bellek yönetimi bağlamında 'Unowned' terimiyle ne kastedildiğini açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

iOS (ve Swift) bellekte hafıza yönetimi bağlamında, "Unowned" terimi, nesneye zayıf referans anlamına gelir ve bu referans, referans sayacını (retain count) artırmaz, ancak bu referansın kullanıldığı süre boyunca nesnenin var olduğunu varsayar.

weak ile farkları:

  • weak referanslar, nesne silindiğinde nil olabilir ve bu nedenle opsiyonel olarak ilan edilir.
  • unowned referanslar opsiyonel değildir ve otomatik olarak nil yapılmaz. Eğer unowned ile referans verilen nesne silinirse, erişim denemesi çalışma zamanında hata (crash) ile sonuçlanır.

Nesnenin yaşam süresinin, referansın yaşam süresinden uzun veya eşit olduğu durumlarda kullanılır.

Örnek:

class Owner {
    var pet: Pet?
}

class Pet {
    unowned let owner: Owner
    init(owner: Owner) {
        self.owner = owner
    }
}

let owner = Owner()
owner.pet = Pet(owner: owner)

Burada, Pet, Owner üzerinde unowned referans tutar ve Owner'ın Pet'ten daha uzun yaşadığı varsayılır.