Sobes.tech
Middle

A többszörös tömbgyűjtemények értéktípusok és referenciatípusok?

sobes.tech MI

Válasz az MI-től

A Swiftben (Array) tömbök (Array) struktúrák (struct), és a struktúrák érték típusok (Value Types). Amikor egy tömböt hozzárendelünk vagy átadunk, akkor annak másolatát készítjük.

Azonban a teljesítmény optimalizálása érdekében a tömb másolási rendszere Copy-on-Write viselkedést mutat. Ez azt jelenti, hogy a tömb adatai csak az első módosításkor kerülnek tényleges másolásra. Eddig mindkét másolat ugyanazt a tárolót osztja meg.

Érték típusok: Struct, Enum, Int, String, Double, Bool. Referencia típusok: Class, Function, Closure.

Példa, ami illusztrálja a Copy-on-Write-t:

var initialArray = [1, 2, 3]
var copiedArray = initialArray // Még nincs tényleges adatmásolat

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

copiedArray[0] = 10     // Itt történik a tényleges adatmásolás

print(initialArray[0]) // 1 (az eredeti tömb nem változott)
print(copiedArray[0])  // 10 (csak a másolt változat változott)