Sobes.tech
Junior — Middle

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:

  1. weak xü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))
  1. NSHashTable və ya NSMapTable istifadə 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.