Sobes.tech
Junior

У чему се састоји разлика између класа и структура у програмском језику Swift?

sobes.tech АИ

Одговор од АИ

Klase su tipovi referenci, strukture su tipovi vrednosti.

Glavne razlike:

  • Nasleđivanje: Klase podržavaju nasleđivanje, strukture ne.
  • Preoblikovanje tipa: Omogućava proveru i tumačenje tipa instance klase tokom izvršavanja.
  • Deinitialization: Klase imaju destruktore (deinit) za oslobađanje resursa, strukture nemaju.
  • Brojač referenci: Klase koriste automatski brojčanik referenci (ARC) za upravljanje memorijom. Strukture se kopiraju prilikom prenosa ili dodeljivanja (može se primeniti copy-on-write za optimizaciju).
  • Mutating metode: Metode koje menjaju svojstva instance strukture ili enumeracije moraju biti označene ključnom reči mutating. Za klase to nije potrebno.

Primer kreiranja:

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

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

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

Primer ponašanja pri dodeljivanju:

// Struktura
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Kopija
point2.x = 10

print(point1.x) // Izlaz: 1

// Klasa
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Referentno dodeljivanje
circle2.radius = 10.0

print(circle1.radius) // Izlaz: 10.0