Bir kolleksiyada zəif istinadlar istifadə edərək obyektlərin saxlanmasını necə həyata keçirmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
iOS-da, kolleksiyalarda obyektləri zəif istinadlar ilə saxlamaq üçün müxtəlif yanaşmalar istifadə oluna bilər, çünki standart kolleksiyalar (məsələn, Array, Set, Dictionary) obyektlərə güclü istinadlar saxlayır, bu da obyektlərin lazım olandan daha uzun müddət yaddaşda saxlanmasına səbəb ola bilər.
Əsas üsullar:
weakxüsusiyyəti ilə sarmalayıcı istifadə etmək
Obyektə zəif istinad saxlayan sarmalayıcı sinfi yaradılır. Bu sarmalayıcılar kolleksiyaya obyektlər yerinə əlavə olunur.
class WeakRef<T: AnyObject> {
weak var value: T?
init(value: T) {
self.value = value
}
}
var weakArray = [WeakRef<MyClass>]()
let obj = MyClass()
weakArray.append(WeakRef(value: obj))
NSHashTablevə yaNSMapTableistifadə etmək
Bu Foundation sinifləri zəif istinadları birbaşa saxlamağa imkan verir.
let weakSet = NSHashTable<MyClass>.weakObjects()
weakSet.add(obj)
NSHashTable weakObjects seçimi ilə obyektləri avtomatik zəif saxlayır və obyekt sərbəst buraxılsa, kolleksiyadan silinir.
Beləliklə, iOS-da obyektləri zəif saxlamaq üçün ümumiyyətlə NSHashTable və ya weak xüsusiyyətləri ilə sarmalayıcılar istifadə olunur.