Junior — Middle
Kako napraviti strukturu podataka koja čuva slabe reference na objekte?
sobes.tech АИ
Одговор од АИ
Za kreiranje strukture podataka koja čuva slabe reference na objekte u iOS (Swift/Objective-C), koristi se klasa NSMapTable ili NSHashTable sa opcijom za slabe reference.
Slabe reference omogućavaju objektima da budu oslobođeni iz memorije ako na njih nema jakih referenci, čime se sprečavaju curenja memorije.
Primer u Swift-u sa NSMapTable:
let mapTable = NSMapTable<NSString, AnyObject>.weakToWeakObjects()
let key = "key" as NSString
var object: NSObject? = NSObject()
mapTable.setObject(object, forKey: key)
object = nil // sada objekat može biti uklonjen iz memorije
if let value = mapTable.object(forKey: key) {
print("Objekat postoji")
} else {
print("Objekat je uklonjen")
}
Takođe, možete koristiti Weak wrapper — omotač sa internom slabom referencom, ako vam je potrebna vaša struktura podataka.
Na ovaj način, za skladištenje slabih referenci koriste se NSMapTable sa konfiguracijom weak-to-weak ili weak-to-strong, u zavisnosti od zadatka.