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?
}