Sobes.tech
Junior — Middle

Jak można utworzyć strukturę danych, która przechowuje słabe odniesienia do obiektów?

sobes.tech AI

Odpowiedź od AI

Aby utworzyć strukturę danych przechowującą słabe odwołania do obiektów w iOS (Swift/Objective-C), używa się klasy NSMapTable lub NSHashTable z opcją słabych odwołań.

Słabe odwołania pozwalają obiektom być zwolnionymi z pamięci, jeśli nie mają silnych odwołań, zapobiegając wyciekom pamięci.

Przykład w Swift z NSMapTable:

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

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

object = nil // teraz obiekt może zostać usunięty z pamięci

if let value = mapTable.object(forKey: key) {
    print("Obiekt istnieje")
} else {
    print("Obiekt został usunięty")
}

Możesz także użyć Weak wrapper — opakowania z wewnętrzną słabą referencją, jeśli potrzebujesz własnej struktury danych.

W ten sposób, do przechowywania słabych odwołań, używa się NSMapTable z konfiguracją weak-to-weak lub weak-to-strong, w zależności od zadania.