Junior — Middle
Tous les types de données stockant des valeurs utilisent-ils nécessairement le mécanisme de copie lors de l'assignation ou du passage?
sobes.tech IA
Réponse de l'IA
Tous les types de données n'utilisent pas le mécanisme de copie lors de l'assignation ou du transfert. Sur iOS (et Swift), on distingue les types de valeur (value types) et les types de référence (reference types).
- Types de valeur (par exemple, structures, énumérations, types de base comme Int, Double) sont copiés lors de l'assignation ou du transfert — une nouvelle copie des données est créée.
- Types de référence (par exemple, classes) ne copient que la référence à l'objet, pas l'objet lui-même. Ainsi, plusieurs variables peuvent pointer vers le même objet en mémoire.
Exemple en Swift:
struct Point { var x: Int; var y: Int }
class Person { var name: String
init(name: String) { self.name = name }
}
var p1 = Point(x: 0, y: 0)
var p2 = p1 // la valeur est copiée
p2.x = 10
print(p1.x) // 0
var person1 = Person(name: "Alice")
var person2 = person1 // la référence est copiée
person2.name = "Bob"
print(person1.name) // Bob
Ainsi, le mécanisme de copie ne s'applique qu'aux types de valeur, tandis que les types de référence utilisent le transfert de référence.