Junior — Middle
Cum se poate crea o structură de date care păstrează referințe slabe către obiecte?
sobes.tech AI
Răspuns de la AI
Pentru a crea o structură de date care stochează referințe slabe la obiecte în iOS (Swift/Objective-C), se folosește clasa NSMapTable sau NSHashTable cu opțiunea de referințe slabe.
Referințele slabe permit obiectelor să fie eliberate din memorie dacă nu există referințe puternice către ele, prevenind scurgerile de memorie.
Exemplu în Swift cu NSMapTable:
let mapTable = NSMapTable<NSString, AnyObject>.weakToWeakObjects()
let key = "key" as NSString
var object: NSObject? = NSObject()
mapTable.setObject(object, forKey: key)
object = nil // acum obiectul poate fi eliminat din memorie
if let value = mapTable.object(forKey: key) {
print("Obiectul există")
} else {
print("Obiectul a fost eliminat")
}
De asemenea, se poate folosi Weak wrapper — un înveliș cu o referință slabă internă, dacă este nevoie de o structură de date personalizată.
Astfel, pentru stocarea referințelor slabe, se folosește NSMapTable cu configurație weak-to-weak sau weak-to-strong, în funcție de sarcină.