Junior — Middle
Чӣ тавр озод кардани хотирае, ки объект дар барнома ишғол мекунад?
sobes.tech AI
Ҷавоб аз AI
Дар iOS, озодкунии хотира асосан автоматӣ бо ёрии системаи ARC (Automatic Reference Counting) сурат мегирад. Ҳар як объект ҳисобкунаки истинод дорад, ки вақте як истиноди қавӣ эҷод мешавад, меафзояд ва вақте ки он хориҷ мешавад, кам мешавад. Вақте ҳисобкунӣ ба сифр мерасад, объект автоматӣ нест карда мешавад ва хотира озод карда мешавад.
Агар дар код истинодҳои циклӣ (масалан, ду объект бо истинодҳои қавӣ ба якдигар) пайдо шаванд, хотира озод намешавад. Барои ҳалли ин масъала, истифодаи истинодҳои суст (weak) ё бе соҳиби (unowned) истифода мешавад.
Масалан:
class Person {
var name: String
weak var apartment: Apartment? // истиноди суст барои пешгирӣ аз цикл
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
unowned let tenant: Person // истиноди бе соҳиб
init(unit: String, tenant: Person) {
self.unit = unit
self.tenant = tenant
}
}
Бинобар ин, озодкунии хотира автоматӣ аст, агар истинодҳо дуруст идора карда шаванд.