Junior — Middle
როგორ შეიძლება შექმნათ მონაცემთა სტრუქტურა, რომელიც ინახავს სუსტი მითითებებს ობიექტებზე?
sobes.tech AI
პასუხი AI-სგან
iOS-da (Swift/Objective-C) obyektlarga zaif hivatkalar saqlash uchun ma'lumotlar tuzilmasi yaratish uchun NSMapTable yoki NSHashTable sinfi zaif hivatka opsiyasi bilan ishlatiladi.
Zaif hivatkalar obyektlarning xotiradan chiqarilishini ta'minlaydi, agar ularga kuchli hivatkalar bo'lmasa, bu xotira oqishini oldini oladi.
Swiftda NSMapTable bilan misol:
let mapTable = NSMapTable<NSString, AnyObject>.weakToWeakObjects()
kalit = "key" sifatida NSString
obyekt = NSObject()
mapTable.setObject(obyekt, forKey: kalit)
obyekt = nil // endi obyekt xotiradan o'chirilishi mumkin
agar qiymat = mapTable.object(forKey: kalit) {
chop et("Obyekt mavjud")
} boshqa {
chop et("Obyekt o'chirilgan")
}
Shuningdek, Weak wrapper dan foydalanish mumkin — ichki zaif hivatkaga ega bo'lgan qadoqlovchi, agar sizga o'z ma'lumotlar tuzilmasi kerak bo'lsa.
Shunday qilib, zaif hivatkalarni saqlash uchun NSMapTable zaif-zaif yoki zaif-qattiq konfiguratsiya bilan ishlatiladi, vazifaga qarab.