Junior — Middle
Оё мавҷудияти истиноди қавӣ дар як мақом метавонад ба дарзидани хотира оварда расонад?
sobes.tech AI
Ҷавоб аз AI
Бале, мавҷудияти истинодҳои қавӣ байни объектҳо дар iOS метавонад ба шикасти хотира оварда расонад, махсусан агар як цикли истинод (retention cycle) пайдо шавад. Ин вақте рӯй медиҳад, ки ду объект бо истинодҳои қавӣ якдигарро нигоҳ медоранд, ва системаи ARC наметавонад онҳоро озод кунад, зеро ҳисобкунаки истинодҳо барои ҳарду ба сифр намерасад.
Барои пешгирии чунин шикастҳо, истифодаи истинодҳои заиф (weak) ё беҳуқуқ (unowned) истифода мешавад, ки ҳисобкунаки истинодҳоро зиёд намекунанд ва имкон медиҳанд, ки цикли қатъ шавад.
Маслиҳат барои цикли истинод:
class Person {
var apartment: Apartment?
}
class Apartment {
var tenant: Person?
}
ҳамин шахс = Person()
ҳамин хона = Apartment()
шахс.хона = хона
хона.иштилоқ = шахс // дар ин ҷо цикли нигоҳдорӣ пайдо мешавад
Барои пешгирии шикаст, якеро аз истинодҳоро заиф кардан мумкин аст:
class Apartment {
weak var tenant: Person?
}