Sobes.tech
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.