Sobes.tech
Middle

Zijn de standaard array-collecties waarde- en referentietypen?

sobes.tech AI

Antwoord van AI

Arrays (Array) in Swift zijn structuren (struct), en structuren zijn waarde-types (Value Types). Bij toewijzing of het doorgeven van een array wordt er een kopie gemaakt.

Echter, om de prestaties te optimaliseren, heeft het kopieersysteem van arrays een Copy-on-Write gedrag. Dit betekent dat de daadwerkelijke kopie van de array-gegevens pas plaatsvindt bij de eerste wijziging van een van de kopieën. Tot dat moment delen beide kopieën dezelfde gegevensopslag.

Waarde-types: Struct, Enum, Int, String, Double, Bool. Referentietypes: Class, Function, Closure.

Voorbeeld dat Copy-on-Write illustreert:

var initialArray = [1, 2, 3]
var copiedArray = initialArray // Nog geen echte kopie van de gegevens

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

copiedArray[0] = 10     // Hier vindt de echte kopie van de gegevens plaats

print(initialArray[0]) // 1 (de originele array is niet veranderd)
print(copiedArray[0])  // 10 (alleen de gekopieerde versie is veranderd)