Тавзеҳ диҳед, ки чӣ гуна давраи нигоҳдории дар хотира ва чӣ гуна таъсир мерасонад ба кори барномаҳо.
sobes.tech AI
Ҷавоб аз AI
Цикли нигоҳдорӣ (retain cycle) — ин ҳолат дар идоракунии хотира аст, вақте ки ду ё бештар аз объект бо истифода аз истинодҳои қавӣ (strong references) ба ҳамдигар муроҷиат мекунанд, ки ин ба системаи ҳисобкунии автоматии истинодҳо (ARC дар iOS) имкон намедиҳад, ки онҳоро озод кунад. Дар натиҷа, дархости хотира ба вуҷуд меояд, зеро объектҳо дар хотира мемонанд, ҳарчанд ки дигар ниёз надоранд.
Масалан, агар объект A истиноди қавӣ ба объект B дошта бошад ва объект B — ба A, ARC наметавонад ягонро озод кунад, ҳатто агар дар берун истинодҳои дигар набошанд.
Барои пешгирӣ аз циклҳои нигоҳдорӣ, одатан истинодҳои суст (weak) ё беҳуқуқ (unowned) истифода мешаванд, то циклро шикастанд. Масалан, делегатҳо аксар вақт ҳамчун weak эълон мешаванд.
Масалан дар Swift:
class Person {
var apartment: Apartment?
}
class Apartment {
weak var tenant: Person? // истиноди суст барои пешгирӣ аз цикл
}
let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person
Агар tenant як истиноди қавӣ мебуд, объектҳо озод намешуданд, ва ин циклро ба вуҷуд меовард.
Таъсири ба кор даровардани барномаҳо: циклҳои нигоҳдорӣ ба дархости хотира оварда мерасонанд, ки метавонад ба афзоиши истифодаи хотира, кам шудани иҷроиш ва ҳатто кати барнома оварда расонад.