Sobes.tech
Junior — Middle

Kako se vrši raspodela i oslobađanje memorije za referentne tipove podataka?

sobes.tech АИ

Одговор од АИ

У iOS, за типове референце (на пример, класе), меморијата се алоцира динамично во купот (heap). Кога се создава објект од класа, системот му доделува меморија во купот и враќа референца на тој објект.

Освободувањето на меморијата се случува преку автоматско броење на референци (ARC — Automatic Reference Counting). Секој објект ја одржува бројачот на референци — бројот на активни референци кон него. Кога се создава нова референца, бројачот се зголемува, а кога референцата се брише или станува nil, се намалува. Кога бројачот достигнува нула, објектот автоматски се брише од меморијата.

Пример:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var person1: Person? = Person(name: "Иван") // бројач на референци = 1
var person2 = person1 // бројач на референци = 2
person1 = nil // бројач на референци = 1
person2 = nil // бројач на референци = 0, објектот Person се брише од меморијата

На овој начин, развивачот не мора рачно да ослободува меморија — ARC го управува автоматски.