Sobes.tech
Junior — Middle

Hoe vindt de toewijzing en vrijgave van geheugen plaats voor referentietypen?

sobes.tech AI

Antwoord van AI

In iOS worden referentietypen (bijvoorbeeld klassen) dynamisch toegewezen in de heap. Wanneer een klasse-object wordt gemaakt, wijst het systeem geheugen toe in de heap en geeft een referentie naar dat object.

Het vrijmaken van geheugen gebeurt door automatische referentietelling (ARC — Automatic Reference Counting). Elk object houdt een referentieteller bij — het aantal actieve referenties naar dat object. Wanneer een nieuwe referentie wordt gemaakt, wordt de teller verhoogd, en wanneer een referentie wordt verwijderd of nil wordt, wordt deze verlaagd. Wanneer de teller nul bereikt, wordt het object automatisch uit het geheugen verwijderd.

Voorbeeld:

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

var person1: Person? = Person(name: "Иван") // referentieteller = 1
var person2 = person1 // referentieteller = 2
person1 = nil // referentieteller = 1
person2 = nil // referentieteller = 0, het Person-object wordt uit het geheugen verwijderd

Op deze manier hoeft de ontwikkelaar het geheugen niet handmatig vrij te maken — ARC beheert dit automatisch.