Sobes.tech
Junior — Middle

Kunt u uitleggen hoe het vrijmaken van geheugen dat door een object wordt gebruikt, binnen het systeem plaatsvindt?

sobes.tech AI

Antwoord van AI

In iOS wordt het vrijmaken van geheugen van objecten voornamelijk gedaan door het ARC-mechanisme (Automatische Referentie Telling).

Elk object in het geheugen heeft een referentieteller: het aantal actieve verwijzingen ernaar. Wanneer er een verwijzing naar een object wordt gemaakt, wordt de teller verhoogd; wanneer de verwijzing wordt verwijderd, 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: "Alex") // referentieteller = 1
var person2 = person1 // referentieteller = 2
person1 = nil // referentieteller = 1
person2 = nil // referentieteller = 0, object wordt vrijgegeven

Als er cyclische verwijzingen zijn (bijvoorbeeld twee objecten die naar elkaar verwijzen), kan ARC het geheugen niet automatisch vrijmaken. Hiervoor worden zwakke (weak) of niet-eigenlijke (unowned) verwijzingen gebruikt, die de teller niet verhogen.