Junior — Middle
Kannst du erklären, welche Arten von Speicherlecks in Anwendungen existieren?
sobes.tech KI
Antwort von AI
In iOS-Anwendungen sind die Haupttypen von Speicherlecks mit einer falschen Verwaltung der Objektverweise verbunden:
- Starke Referenzzyklen (Strong Reference Cycles) — wenn zwei Objekte starke Referenzen zueinander haben und keines freigegeben werden kann.
- Leaks durch Closures — wenn eine Closure self mit einer starken Referenz erfasst, kann dies zu einem Referenzzyklus führen.
- Nicht freigegebene Ressourcen — Objekte, die nicht freigegeben werden, weil kein deinit-Aufruf erfolgt oder sie falsch verwendet werden.
Beispiel für einen starken Referenzzyklus:
class Person {
var apartment: Apartment?
}
class Apartment {
var tenant: Person?
}
let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // starker Referenzzyklus
Um dies zu vermeiden, verwendet man schwache (weak) oder nicht-ungeordnete (unowned) Referenzen.