Sobes.tech
Junior — Middle
83

Қалайша әлсіз сілтемелерді сақтайтын деректер құрылымын жасауға болады?

Сұралған компаниялар
VKVK

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