Junior — Middle
Xotirada Retain Cycle (saqlash sikli) yuzaga kelishi uchun qanday qadamlar bajarilishi kerak?
sobes.tech AI
AIdan javob
iOS-da Retain Cycle (Saqlash sikli) ikki yoki undan ortiq obyektlar bir-birini kuchli havolalar bilan ushlab turganda yuzaga keladi, bu esa ularning xotiradan ozod qilinishiga to'sqinlik qiladi va oqibati sifatida xotira oqishi yuzaga keladi.
Saqlash sikli yuzaga kelishi uchun quyidagi bosqichlar talab qilinadi:
- Ob'ekt A, ob'ekt B ga kuchli havola saqlaydi.
- Ob'ekt B, ob'ekt A ga kuchli havola saqlaydi.
- Hech qanday obyekt ozod qilinmaydi, chunki havola hisoblagichi nolga yetmaydi.
Misol:
class A {
var b: B?
}
class B {
var a: A?
}
let a = A()
let b = B()
a.b = b
b.a = a // Saqlash sikli
Siklni oldini olish uchun, havolalardan biri zaif (weak) yoki egalik qilmaydigan (unowned) qilib olinadi. Masalan:
class B {
weak var a: A?
}
Shu tarzda, o'zaro kuchli havolalar bo'lmagan holda saqlash sikli yuzaga keladi va obyektlarning ozod qilinishi to'xtatiladi.