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.