Sobes.tech
Back to questions
Junior — Middle
70

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

Companies where asked
VKVK

Answer from AI

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