Junior — Middle
83
Қалайша әлсіз сілтемелерді сақтайтын деректер құрылымын жасауға болады?
Сұралған компаниялар
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, в зависимости от задачи.