Swift Academy · Les

Hoe ARC referenties telt

Wat ARC tijdens het compileren doet, retain/release-aanroepen en objectlevensduren.

Les 1 van 412 stappen

Hoe ARC referenties telt is een gratis Swift Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Swift Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Swift Academy bevat in totaal 4 lessen.

Welkom

Automatic Reference Counting (ARC) beheert het geheugen van instanties van klassen. Als je begrijpt hoe ARC verwijzingen telt, kun je code schrijven zonder geheugenlekken.

Wat ARC doet

ARC houdt bij hoeveel *sterke* verwijzingen naar elke instantie van een klasse wijzen. Wanneer de telling nul bereikt, roept ARC `deinit` aan en geeft het geheugen vrij — automatisch.

Sterke verwijzingen

```swift var a: Dog? = Dog(name: "Rex") // count = 1 var b = a // count = 2 a = nil // count = 1 b = nil // count = 0 → deinit ```

ARC vindt plaats tijdens het compileren

ARC voegt tijdens het compileren aanroepen naar retain en release toe — niet tijdens runtime zoals een garbagecollector. Dit betekent: • Geen pauzes door garbagecollection • Deterministische vrijgave van geheugen • Een kleine toename van de codeomvang door retain- en release-aanroepen

Risico op een cyclus van sterke verwijzingen

```swift class Node { var next: Node? } var n1: Node? = Node() var n2: Node? = Node() n1?.next = n2 n2?.next = n1 // cycle! n1 = nil; n2 = nil // both stuck at count=1 — leaked! ```

Tellen met meerdere variabelen

```swift class Engine {} var car1: Engine? = Engine() // count = 1 var car2 = car1 // count = 2 var car3 = car2 // count = 3 car1 = nil // count = 2 car2 = nil // count = 1 // Engine still alive — car3 holds it car3 = nil // count = 0 → deinit ```

ARC in collecties

```swift var dogs: [Dog] = [] dogs.append(Dog(name:"A")) // count = 1 dogs.append(Dog(name:"B")) // count = 1 each dogs.removeAll() // both deinit called ```

ARC geldt NIET voor waardetypen

Structs, enumeraties en tuples worden NIET geteld met referentietellingen: ```swift struct Point { var x, y: Double } // no retain/release var p1 = Point(x:1,y:2) var p2 = p1 // copy — no ARC ```

ARC observeren met deinit

```swift class Cat { let name: String init(name: String) { self.name = name; print("\(name) born") } deinit { print("\(name) deallocated") } } var c: Cat? = Cat(name: "Luna") c = nil // "Luna deallocated" printed ```

Prestaties van ARC tegenover garbagecollection

• Garbagecollection: pauzeert de uitvoering periodiek om te verzamelen; afweging tussen doorvoer en latentie • ARC: geeft geheugen onmiddellijk vrij wanneer de telling 0 bereikt; geen pauzes • Overhead van ARC: elke toewijzing via een sterke verwijzing kost een retain/release-paar

Korte controle

Wanneer roept ARC `deinit` aan en geeft het geheugen van een object vrij?

Samenvatting

Belangrijkste punten: • ARC houdt sterke verwijzingen naar instanties van klassen bij • Telling 0 → `deinit` wordt aangeroepen → geheugen wordt vrijgegeven • ARC vindt plaats tijdens het compileren — geen pauzes door garbagecollection • Waardetypen (struct/enum) worden niet door ARC beheerd • Cycli voorkomen dat de telling 0 bereikt → gebruik weak/unowned Hierna: cycli van sterke verwijzingen.
Gratis beginnen

Leer Swift met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
122
Lessen
409

Veelgestelde vragen

Is de les “Hoe ARC referenties telt” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Swift Academy, waaronder “Hoe ARC referenties telt”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Swift Academy bevat in totaal 4 lessen.

Wat leer ik in “Hoe ARC referenties telt”?

Wat ARC tijdens het compileren doet, retain/release-aanroepen en objectlevensduren. Je oefent met Swift Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Swift Academy te beginnen?

Ervaring vooraf is niet nodig. Swift Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Hoe ARC referenties telt”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Swift Academy?

Ja. Elke les over Swift Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Hoe ARC referenties telt
  2. Retain-cycli: oorzaken en detectie
  3. weak- en unowned-referenties
  4. Capture-lijsten van closures en [weak self]
← Terug naar Swift Academy