Sobes.tech
Junior — Middle

Comment implémenter le stockage de références faibles dans un tableau dans votre langage de programmation?

sobes.tech IA

Réponse de l'IA

В 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
    }
}

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