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, в зависимост от задачата.