Junior — Middle
Gebruiken alle gegevenstypen die waarden opslaan noodzakelijkerwijs het kopieermekanisme bij toewijzing of overdracht?
sobes.tech AI
Antwoord van AI
Niet alle datatypes gebruiken het kopieermecanisme bij toewijzing of overdracht. Op iOS (en Swift) worden waarde-typen (value types) en referentietypen (reference types) onderscheiden.
- Waarde-typen (bijvoorbeeld structuren, enumeraties, basistypen zoals Int, Double) worden gekopieerd bij toewijzing of overdracht — er wordt een nieuwe kopie van de gegevens gemaakt.
- Referentietypen (bijvoorbeeld klassen) kopiëren alleen de verwijzing naar het object, niet het object zelf. Zo kunnen meerdere variabelen naar hetzelfde object in het geheugen wijzen.
Voorbeeld in Swift:
struct Point { var x: Int; var y: Int }
class Person { var name: String
init(name: String) { self.name = name }
}
var p1 = Point(x: 0, y: 0)
var p2 = p1 // kopieert de waarde
p2.x = 10
print(p1.x) // 0
var person1 = Person(name: "Alice")
var person2 = person1 // kopieert de verwijzing
person2.name = "Bob"
print(person1.name) // Bob
Dus, het kopieermechanisme wordt alleen toegepast op waarde-typen, terwijl referentietypen gebruik maken van verwijzingsoverdracht.