Junior — Middle
Kaip sukurti duomenų struktūrą, kuri saugo silpnus nuorodas į objektus?
sobes.tech AI
Atsakymas iš AI
Norėdami sukurti duomenų struktūrą, kuri saugo silpnus nuorodas į objektus iOS (Swift/Objective-C), naudojama klasė NSMapTable arba NSHashTable su silpnų nuorodų galimybe.
Silpnos nuorodos leidžia objektams būti išlaisvintiems iš atminties, jei nėra stiprių nuorodų į juos, taip išvengiant atminties nutekėjimo.
Pavyzdys Swift su NSMapTable:
let mapTable = NSMapTable<NSString, AnyObject>.weakToWeakObjects()
raktas = "key" kaip NSString
objektas = NSObject()
mapTable.setObject(objektas, forKey: raktas)
objektas = nil // dabar objektas gali būti ištrintas iš atminties
jei leistina reikšmė = mapTable.object(forKey: raktas) {
spausdinti("Objektas egzistuoja")
} kitaip {
spausdinti("Objektas buvo ištrintas")
}
Taip pat galima naudoti Weak wrapper — apvalkalą su viduje esančia silpna nuoroda, jei jums reikia savo duomenų struktūros.
Taip, silpnos nuorodos saugomos naudojant NSMapTable su konfigūracija weak-to-weak arba weak-to-strong, priklausomai nuo užduoties.