Junior — Middle
Jak lze vytvořit datovou strukturu, která uchovává slabé odkazy na objekty?
sobes.tech AI
Odpověď od AI
Pro vytvoření datové struktury, která uchovává slabé odkazy na objekty v iOS (Swift/Objective-C), se používá třída NSMapTable nebo NSHashTable s možností slabých odkazů.
Slabé odkazy umožňují objektům být uvolněny z paměti, pokud na ně nejsou žádné silné odkazy, čímž se předchází únikům paměti.
Příklad v Swift s NSMapTable:
let mapTable = NSMapTable<NSString, AnyObject>.weakToWeakObjects()
let key = "key" as NSString
var object: NSObject? = NSObject()
mapTable.setObject(object, forKey: key)
object = nil // nyní může být objekt odstraněn z paměti
if let value = mapTable.object(forKey: key) {
print("Objekt existuje")
} else {
print("Objekt byl odstraněn")
}
Také lze použít Weak wrapper — obal s interní slabou referencí, pokud je potřeba vlastní datová struktura.
Tímto způsobem se pro ukládání slabých odkazů používá NSMapTable s konfigurací weak-to-weak nebo weak-to-strong, podle úkolu.