Junior — Middle
Xotira sikllarini oldini olish uchun ob'ekt modelida bog'lanishlarni qanday to'g'ri tashkil qilish mumkin?
sobes.tech AI
AIdan javob
iOS-da ob'ekt modelida tsirkliy xotirjamlikni oldini olish uchun (Swift yoki Objective-C ishlatib) kuchli (strong), zaif (weak) va egalik qilmaydigan (unowned) havolalarni to'g'ri ishlatish muhim.
Asosiy g'oya:
- strong — egalik qiluvchi havola, ob'ektning havola hisobini oshiradi.
- weak — egalik qilmaydigan havola, hisobni oshirmaydi, ob'ekt o'chirilganda avtomatik ravishda nilga o'tadi.
- unowned — egalik qilmaydigan havola, hisobni oshirmaydi, lekin nilga o'tmaydi, ob'ekt uzoqroq yashashiga kafolat berilgan hollarda ishlatiladi.
Ko'pincha, tsikllar yuzaga keladi, masalan, ota-ona va bolalar o'rtasida yoki delegat va ob'ekt o'rtasida. Tsikllarni oldini olish uchun:
- Ota-ona bolani strong bilan ushlab turadi.
- Bola ota-ona bilan weak yoki unowned orqali murojaat qiladi.
Swiftda misol:
class Parent {
var child: Child?
}
class Child {
weak var parent: Parent? // tsiklni oldini olish uchun zaif havola
}
let parent = Parent()
let child = Child()
parent.child = child
child.parent = parent
Shunday qilib, parent va child ishlatilmay qolganida, xotira to'g'ri tarzda bo'shatiladi, tsikllar va sızıntılardan saqlanadi.