Junior — Middle
Kā izveidot datu struktūru, kas saglabā vājas atsauces uz objektiem?
sobes.tech AI
Atbilde no AI
Lai izveidotu datu struktūru, kas glabā vājas atsauces uz objektiem iOS (Swift/Objective-C), tiek izmantota klase NSMapTable vai NSHashTable ar vājo atsauces opciju.
Vājas atsauces ļauj objektiem tikt brīviem no atmiņas, ja uz tiem nav stipru atsauču, novēršot atmiņas noplūdes.
Piemērs Swift ar NSMapTable:
let mapTable = NSMapTable<NSString, AnyObject>.weakToWeakObjects()
atsauce = "atsauce" kā NSString
objekts = NSObject()
mapTable.setObject(objekts, forKey: atsauce)
objekts = nil // tagad objekts var tikt izdzēsts no atmiņas
ja atbilde = mapTable.object(forKey: atsauce) {
print("Objekts pastāv")
} citādi {
print("Objekts tika izdzēsts")
}
Tāpat var izmantot Weak wrapper — apvalku ar iekšēju vājo atsauci, ja nepieciešama pielāgota datu struktūra.
Tādējādi vājas atsauces tiek glabātas ar NSMapTable konfigurāciju weak-to-weak vai weak-to-strong, atkarībā no uzdevuma.