Sobes.tech
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.