Sobes.tech
Middle

Colecțiile standard de array sunt tipuri de valoare și tipuri de referință?

sobes.tech AI

Răspuns de la AI

Array-urile (Array) în Swift sunt structuri (struct), iar structurile sunt tipuri de valoare (Value Types). La atribuirea sau transmiterea unui array, se face o copie a acestuia.

Cu toate acestea, pentru a optimiza performanța, sistemul de copiere a array-urilor are un comportament Copy-on-Write. Aceasta înseamnă că copia efectivă a datelor array-ului are loc doar la prima modificare a uneia dintre copii. Până atunci, ambele copii împart aceeași stocare de date.

Tipuri de valoare: Struct, Enum, Int, String, Double, Bool. Tipuri de referință: Class, Function, Closure.

Exemplu care ilustrează Copy-on-Write:

var initialArray = [1, 2, 3]
var copiedArray = initialArray // Încă nu există o copie reală a datelor

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

copiedArray[0] = 10     // Aici are loc copia reală a datelor

print(initialArray[0]) // 1 (array-ul original nu s-a schimbat)
print(copiedArray[0])  // 10 (doar versiunea copiată s-a schimbat)