Junior — Middle
Bellek içinde bir Retain Cycle (tutma döngüsü) oluşması için hangi adımlar izlenmelidir?
sobes.tech yapay zeka
AI'dan gelen yanıt
iOS'ta Retain Cycle (Tutma Döngüsü), iki veya daha fazla nesne birbirini güçlü referanslar aracılığıyla tuttuğunda ortaya çıkar ve bu nesnelerin bellekte serbest bırakılmasını engelleyerek sızıntıya neden olur.
Bir tutma döngüsü oluşması için aşağıdaki adımlar gereklidir:
- Nesne A, nesne B'ye güçlü bir referans içerir.
- Nesne B, nesne A'ya güçlü bir referans içerir.
- Hiçbir nesne serbest bırakılmaz, çünkü referans sayacı sıfıra ulaşmaz.
Örnek:
class A {
var b: B?
}
class B {
var a: A?
}
let a = A()
let b = B()
a.b = b
b.a = a // Tutma Döngüsü
Döngüyü önlemek için, referanslardan biri zayıf (weak) veya sahip olmayan (unowned) yapılır. Örneğin:
class B {
weak var a: A?
}
Bu şekilde, karşılıklı güçlü referanslar olmadan tutma döngüsü oluşur ve nesnelerin serbest bırakılması engellenir.