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.