Sobes.tech
Junior — Middle

Bellek yönetimi ve referans modeli bağlamında Strong ve Weak referans türleri arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Strong-bağlantı, bir nesneye normal güçlü bir bağlantıdır ve bu nesnenin referans sayacını (retain count) artırır. En az bir güçlü bağlantı olduğu sürece, nesne bellekten silinmez.

Weak-bağlantı, nesneye zayıf bir bağlantıdır ve nesnenin referans sayacını artırmaz. Bu, retain döngülerini önlemek için kullanılır. Weak-bağlantının gösterdiği nesne silindiğinde, weak-bağlantı otomatik olarak nil olur.

Swift'te örnek:

class Person {
    var name: String
    init(name: String) { self.name = name }
    var apartment: Apartment?
}

class Apartment {
    let unit: String
    weak var tenant: Person?  // retain döngüsünü önlemek için weak bağlantı
    init(unit: String) { self.unit = unit }
}

let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john  // weak-bağlantı

Burada, weak-bağlantı tenant, Person nesnesini tutmaz, bu da bellek sızıntılarını önler.