Sobes.tech
Назад к вопросам
Junior — Middle
68

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

Компании, где спрашивали
VKVK

Ответ от нейросети

sobes.tech 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 — обёртку с weak-ссылкой внутри, если нужна своя структура данных.

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