Sobes.tech
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
    }
}

Бинобар ин, озодкунии хотира автоматӣ аст, агар истинодҳо дуруст идора карда шаванд.