Junior — Middle
Чӣ гуна бояд пайвандҳоро дар модели объектӣ дуруст ташкил кард, то аз нигоҳдории давомдори хотира пешгирӣ шавад?
sobes.tech AI
Ҷавоб аз AI
Барои пешгирӣ аз гардиши нигоҳдории хотира дар модели объектҳо дар iOS (бо истифода аз Swift ё Objective-C), муҳим аст, ки ба таври дуруст истифода бурдани истинодҳои қавӣ (strong), заиф (weak) ва бе соҳиби (unowned) истифода баред.
Асосии идея:
- strong — истиноде, ки соҳиби аст, ҳисобкунии истинодро ба объект меафзояд.
- weak — истиноде, ки соҳиби нест, ҳисобкуниро наметавонад афзоиш диҳад, автоматӣ ба nil мегузарад вақте ки объект нест карда мешавад.
- unowned — истиноде, ки соҳиби нест, ҳисобкуниро наметавонад афзоиш диҳад, аммо ба nil мегузарад, вақте ки объект дарозтар зиндагӣ мекунад.
Баъзан, гардишҳо ба вуҷуд меоянд, масалан, байни падар ва фарзанд ё байни намоянда ва объект. Барои пешгирӣ кардани гардишҳо:
- Падар фарзандро тавассути strong нигоҳ медорад.
- Фарзанд ба падар тавассути weak ё unowned ишора мекунад.
Масалан дар Swift:
class Parent {
var child: Child?
}
class Child {
weak var parent: Parent? // ишораи заъиф, барои пешгирӣ аз гардиш
}
let parent = Parent()
let child = Child()
parent.child = child
child.parent = parent
Ин тариқ, вақте ки parent ва child дигар истифода намешаванд, хотира дуруст озод мешавад, бе гардишҳо ва сӯхтанҳои хотира.