Sobes.tech
Middle

Les collections standard de tableaux sont-elles des types de valeur et des types de référence?

sobes.tech IA

Réponse de l'IA

Les tableaux (Array) en Swift sont des structures (struct), et les structures sont des types de valeur (Value Types). Lors de l'assignation ou du passage d'un tableau, une copie est effectuée.

Cependant, pour optimiser les performances, le système de copie de tableau adopte un comportement Copy-on-Write. Cela signifie que la copie réelle des données du tableau ne se produit qu'au moment de la première modification de l'une des copies. Jusqu'à ce moment, les deux copies partagent le même stockage de données.

Types de valeur : Struct, Enum, Int, String, Double, Bool. Types de référence : Class, Function, Closure.

Exemple illustrant Copy-on-Write :

var initialArray = [1, 2, 3]
var copiedArray = initialArray // Pas de copie réelle des données encore

print(initialArray[0]) // 1
print(copiedArray[0])  // 1

copiedArray[0] = 10     // La copie réelle des données se produit ici

print(initialArray[0]) // 1 (le tableau original n'a pas changé)
print(copiedArray[0])  // 10 (seule la version copiée a changé)