Junior — Middle
Bir ob'ektda kuchli havola bo'lsa, bu xotira oqib ketishiga olib keladimi?
sobes.tech AI
AIdan javob
Ha, iOS'da obyektlar o'rtasida kuchli havolalar mavjudligi, ayniqsa siklik havola (saqlash sikli) yuzaga kelganda, xotira oqishlariga olib kelishi mumkin. Bu, ikki obyekt o'zaro kuchli havolalar bilan ushlab turilganda sodir bo'ladi va ARC tizimi ularni bo'shatolmaydi, chunki ikkala obyektning havola hisoblagichi nolga yetmaydi.
Bunday oqishni oldini olish uchun, zaif (weak) yoki mulk egasi bo'lmagan (unowned) havolalar ishlatiladi; ular havola hisoblagichini oshirmaydi va siklni buzishga imkon beradi.
Havola sikli misoli:
class Person {
var apartment: Apartment?
}
class Apartment {
var tenant: Person?
}
let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // bu yerda saqlash sikli yuzaga keladi
Oqishni oldini olish uchun, havolaning birini zaif qilish mumkin:
class Apartment {
weak var tenant: Person?
}