Swift - weak & strong vars: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „In Swift gibt es die Möglichkeit, Variablen als "strong" oder "weak" zu deklarieren. Eine '''"strong"''' Referenz erstellt eine '''starke Verbindung zwischen…“)
(kein Unterschied)

Version vom 23. Januar 2023, 18:40 Uhr

In Swift gibt es die Möglichkeit, Variablen als "strong" oder "weak" zu deklarieren.

Eine "strong" Referenz erstellt eine starke Verbindung zwischen der Variable und dem Objekt, auf das sie verweist. Das bedeutet, solange die Variable eine starke Referenz auf das Objekt hält, wird das Objekt nicht von der Speicherverwaltung des Systems freigegeben. Dies ist das Standardverhalten in Swift.

Eine "weak" Referenz hingegen erstellt eine schwache Verbindung zwischen der Variable und dem Objekt, auf das sie verweist. Das bedeutet, dass das Objekt von der Speicherverwaltung des Systems freigegeben werden kann, wenn es keine andere starke Referenz darauf gibt. Eine schwache Referenz wird verwendet, um einen starken Referenzkreis zu vermeiden. Dies kann passieren, wenn zwei Objekte starke Referenzen aufeinander haben und keines von beiden freigegeben werden kann, da sie beide eine starke Referenz auf das andere haben. Das nennt man einen "Retain-Zyklus" und kann zu einem Speicherleck führen.

In Swift kann man eine Variable als weak deklarieren, indem man das Schlüsselwort "weak" vor der Variablendeklaration setzt, zum Beispiel:

weak var meineVar: MeineKlasse?

Es ist wichtig zu beachten, dass schwache Referenzen optional sind, da das Objekt, auf das sie verweisen, möglicherweise freigegeben wurde, deshalb werden sie als optionale Typen deklariert.

Es ist ebenfalls wichtig zu beachten, dass weak Referenzen nur für Objekte gelten und nicht-objektorientierte Typen wie Int, String usw. nicht als weak deklariert werden können.