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.