Junior — Middle
Kun je uitleggen welke soorten geheugenlekken er in applicaties bestaan?
sobes.tech AI
Antwoord van AI
In iOS-applicaties zijn de belangrijkste typen geheugenlekken gerelateerd aan onjuist beheer van objectreferenties:
- Sterke referentiecycli (Strong Reference Cycles) — wanneer twee objecten sterke verwijzingen naar elkaar hebben en geen van beiden kan worden vrijgegeven.
- Leaks door closures (Closures) — als een closure self vastlegt met een sterke verwijzing, kan dit leiden tot een referentiecyclus.
- Niet vrijgegeven bronnen — objecten die niet worden vrijgegeven vanwege het ontbreken van een deinit-aanroep of verkeerd gebruik.
Voorbeeld van een sterke referentiecyclus:
class Person {
var apartment: Apartment?
}
class Apartment {
var tenant: Person?
}
let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // sterke referentiecyclus
Om dit te voorkomen, worden zwakke (weak) of niet-eigenlijke (unowned) referenties gebruikt.