Sobes.tech
Junior — Middle

Kuidas luua andmestruktuur, mis säilitab nõrku viiteid objektidele?

sobes.tech AI

Vastus AI-lt

Selleks, et luua andmestruktuur, mis salvestab nõrku viiteid objektidele iOS-is (Swift/Objective-C), kasutatakse klassi NSMapTable või NSHashTable nõrga viite võimalusega.

Nõrgad viited võimaldavad objektidel vabastada mälu, kui nendele ei viita tugevad viited, vältides mälu lekked.

Näide Swiftis NSMapTable-ga:

let mapTable = NSMapTable<NSString, AnyObject>.weakToWeakObjects()

võti = "key" NSStringina
objekt = NSObject()
mapTable.setObject(objekt, forKey: võti)

objekt = nil // nüüd võib objekt eemaldada mälust

kui väärtus = mapTable.object(forKey: võti) {
    print("Objekt eksisteerib")
} muidu {
    print("Objekt eemaldati")
}

Samuti saab kasutada Weak wrapper — ümbrist, mille sees on nõrk viide, kui on vaja oma andmestruktuuri.

Seega salvestatakse nõrku viiteid NSMapTable konfiguratsiooniga weak-to-weak või weak-to-strong, sõltuvalt ülesandest.