Sobes.tech
Junior — Middle

Bir varlıkta güçlü bir referansın bellek sızıntılarına yol açabilir mi?

sobes.tech yapay zeka

AI'dan gelen yanıt

Evet, iOS'ta nesneler arasındaki güçlü referansların varlığı, özellikle döngüsel referans (retain cycle) oluştuğunda, bellek sızıntılarına yol açabilir. Bu, iki nesnenin birbirini güçlü referanslar aracılığıyla tuttuğu ve ARC sisteminin onları serbest bırakamadığı durumdur; çünkü her iki nesnenin referans sayacı sıfıra ulaşmaz.

Böyle sızıntıları önlemek için, zayıf (weak) veya sahip olmayan (unowned) referanslar kullanılır; bunlar referans sayacını artırmaz ve döngüyü kırmaya olanak tanır.

Bir döngü örneği:

class Person {
    var apartment: Apartment?
}

class Apartment {
    var tenant: Person?
}

let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // burada retain cycle oluşur

Sızıntıyı önlemek için, bir referansı zayıf yapabilirsiniz:

class Apartment {
    weak var tenant: Person?
}