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

Как реализовать хранение слабых ссылок внутри массива в вашем языке программирования?

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

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

sobes.tech AI

В Swift для хранения слабых ссылок внутри массива нельзя просто использовать [weak Object], так как weak не поддерживается для элементов массива напрямую. Вместо этого создают обертку с классом, который содержит слабую ссылку:

class WeakRef<T: AnyObject> {
    weak var value: T?
    init(value: T) {
        self.value = value
    }
}

var weakArray: [WeakRef<MyClass>] = []

// Добавление объекта
let obj = MyClass()
weakArray.append(WeakRef(value: obj))

// Доступ к объектам
for weakRef in weakArray {
    if let strongObj = weakRef.value {
        // Используем strongObj
    }
}

Таким образом, массив хранит слабые ссылки через обертку, и объекты могут быть освобождены, если на них нет сильных ссылок.