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)