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 го управува автоматски.