Sobes.tech
Junior — Middle

Bir koleksiyonda zayıf referanslar kullanarak nesnelerin nasıl saklanacağını nasıl uygulayabilirsiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

iOS'ta, koleksiyonlarda nesneleri zayıf referanslar kullanarak depolamak için birkaç yaklaşım kullanılabilir, çünkü standart koleksiyonlar (örneğin, Array, Set, Dictionary) nesnelere güçlü referanslar tutar, bu da nesnelerin gereğinden uzun süre bellekte tutulmasına neden olabilir.

Ana yöntemler:

  1. weak özelliği ile sarmalayıcı kullanımı

Bir sarmalayıcı sınıfı oluşturulur ve nesneye zayıf referans içerir. Bu sarmalayıcılar, nesnelerin kendileri yerine koleksiyona eklenir.

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 veya NSMapTable kullanımı

Bu Foundation sınıfları, doğrudan zayıf referanslar tutmaya izin verir.

let weakSet = NSHashTable<MyClass>.weakObjects()
weakSet.add(obj)

NSHashTable weakObjects seçeneğiyle nesneleri otomatik olarak zayıf tutar ve nesne serbest bırakıldığında koleksiyondan kaldırılır.

Bu şekilde, iOS'ta nesneleri zayıf tutmak için genellikle NSHashTable veya weak özellikleriyle sarmalayıcılar kullanılır.