Sobes.tech
Junior — Middle

Wie kann man eine Datenstruktur erstellen, die schwache Referenzen auf Objekte speichert?

sobes.tech KI

Antwort von AI

Um eine Datenstruktur zu erstellen, die schwache Referenzen auf Objekte in iOS (Swift/Objective-C) speichert, wird die Klasse NSMapTable oder NSHashTable mit der Option für schwache Referenzen verwendet.

Schwache Referenzen ermöglichen es Objekten, aus dem Speicher entfernt zu werden, wenn keine starken Referenzen auf sie bestehen, was Speicherlecks verhindert.

Beispiel in Swift mit NSMapTable:

let mapTable = NSMapTable<NSString, AnyObject>.weakToWeakObjects()

let key = "key" as NSString
var object: NSObject? = NSObject()
mapTable.setObject(object, forKey: key)

object = nil // jetzt kann das Objekt aus dem Speicher entfernt werden

if let value = mapTable.object(forKey: key) {
    print("Objekt existiert")
} else {
    print("Objekt wurde entfernt")
}

Es kann auch ein Weak wrapper verwendet werden — ein Wrapper mit einer internen schwachen Referenz, falls eine eigene Datenstruktur benötigt wird.

Auf diese Weise wird NSMapTable mit der Konfiguration weak-to-weak oder weak-to-strong verwendet, je nach Aufgabe.