Sobes.tech
Junior

Wat is het verschil tussen klassen en structuren in de programmeertaal Swift?

sobes.tech AI

Antwoord van AI

Klassen zijn referentietypes, structuren zijn waardetypes.

Belangrijkste verschillen:

  • Erfenis: Klassen ondersteunen erfenis, structuren niet.
  • Type casting: Hiermee kun je het type van een klasse-instantie controleren en interpreteren tijdens runtime.
  • Deinitialisatie: Klassen hebben destructors (deinit) om bronnen vrij te geven, structuren niet.
  • Referentietelling: Klassen gebruiken automatische referentietelling (ARC) voor geheugenbeheer. Structuren worden gekopieerd bij overdracht of toewijzing (kan copy-on-write gebruiken voor optimalisatie).
  • Muterende methoden: Methoden die de eigenschappen van een structuur- of enum-instantie wijzigen, moeten worden gemarkeerd met mutating. Voor klassen is dit niet nodig.

Voorbeeld van creatie:

// Structuur
struct Point {
    var x: Int
    var y: Int
}

// Klasse
class Circle {
    var radius: Double
    var center: Point

    init(radius: Double, center: Point) {
        self.radius = radius
        self.center = center
    }
}

Voorbeeld van gedrag bij toewijzing:

// Structuur
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Kopie wordt gemaakt
point2.x = 10

print(point1.x) // Uitvoer: 1

// Klasse
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Referentie toewijzing
circle2.radius = 10.0

print(circle1.radius) // Uitvoer: 10.0