Sobes.tech
Junior — Middle

Как може да се създаде структура от данни, която съхранява слаби препратки към обекти?

sobes.tech AI

Отговор от AI

За създаване на структура от данни, която съхранява слаби препратки към обекти в iOS (Swift/Objective-C), се използва класът NSMapTable или NSHashTable с опция за слаби препратки.

Слабите препратки позволяват на обектите да бъдат освобождавани от паметта, ако няма силни препратки към тях, предотвратявайки изтичане на памет.

Пример на Swift с NSMapTable:

let mapTable = NSMapTable<NSString, AnyObject>.weakToWeakObjects()

let key = "key" as NSString
var object: NSObject? = NSObject()
mapTable.setObject(object, forKey: key)

object = nil // сега обектът може да бъде изтрит от паметта

if let value = mapTable.object(forKey: key) {
    print("Обектът съществува")
} else {
    print("Обектът беше изтрит")
}

Може също да се използва Weak wrapper — обвивка с вътрешна слаба препратка, ако е необходима собствена структура от данни.

По този начин, за съхраняване на слаби препратки, се използва NSMapTable с конфигурация weak-to-weak или weak-to-strong, в зависимост от задачата.