Sobes.tech
Middle — Middle+

Peut-on considérer une référence faible comme optionnelle ou se comporte-t-elle différemment?

sobes.tech IA

Réponse de l'IA

Une référence faible en Swift est une référence qui n'augmente pas le compteur de références de l'objet vers lequel elle pointe. Elle est toujours déclarée comme optionnelle, car l'objet auquel elle fait référence peut être supprimé de la mémoire, et dans ce cas, la référence faible devient automatiquement nil.

Autrement dit, une référence faible se comporte comme une optionnelle : elle peut contenir une valeur ou nil. Cela est important pour éviter d'accéder à un objet déjà libéré.

Exemple :

class Person {
    var name: String
    init(name: String) { self.name = name }
}

var person: Person? = Person(name: "Alex")
weak var weakPerson: Person? = person

print(weakPerson?.name) // Optional("Alex")
person = nil
print(weakPerson?.name) // nil, car l'objet a été supprimé

Ainsi, la référence faible est toujours optionnelle et devient automatiquement nil lors de la suppression de l'objet.