Junior — Middle
Ako vytvoriť dátovú štruktúru, ktorá uchováva slabé odkazy na objekty?
sobes.tech AI
Odpoveď od AI
Na vytvorenie dátovej štruktúry, ktorá uchováva slabé odkazy na objekty v iOS (Swift/Objective-C), sa používa trieda NSMapTable alebo NSHashTable s možnosťou slabých odkazov.
Slabé odkazy umožňujú objektom byť uvoľnené z pamäti, ak na ne nie sú žiadne silné odkazy, čím sa predchádza únikom pamäti.
Prí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 // teraz môže byť objekt odstránený z pamäti
if let value = mapTable.object(forKey: key) {
print("Objekt existuje")
} else {
print("Objekt bol odstránený")
}
Tiež je možné použiť Weak wrapper — obal s internou slabou referenciou, ak je potrebná vlastná dátová štruktúra.
Týmto spôsobom sa na ukladanie slabých odkazov používa NSMapTable s konfiguráciou weak-to-weak alebo weak-to-strong, podľa úlohy.