Sobes.tech
Junior

Mi a különbség az osztályok és a struktúrák között a Swift programozási nyelvben?

sobes.tech MI

Válasz az MI-től

Az osztályok referencia típusok, a szerkezetek érték típusok.

Fő különbségek:

  • Öröklődés: Az osztályok támogatják az öröklődést, a szerkezetek nem.
  • Típus átalakítás: Lehetővé teszi az osztály példány típusának futás közbeni ellenőrzését és értelmezését.
  • Deinitialization: Az osztályok rendelkeznek deinit destruktorokkal az erőforrások felszabadítására, a szerkezetek nem.
  • Referencia számlálás: Az osztályok automatikus referencia számlálást (ARC) használnak a memória kezelésére. A szerkezetek másolódnak átadás vagy hozzárendelés során (kép-on-írhatás alkalmazható az optimalizáció érdekében).
  • Mutating metódusok: A szerkezet vagy enum példányának tulajdonságait módosító metódusokat mutating kulcsszóval kell ellátni. Osztályok esetében ez nem szükséges.

Példa létrehozásra:

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

// Osztály
class Circle {
    var radius: Double
    var center: Point

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

Viselkedés példája hozzárendeléskor:

// Szerkezet
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Másolat készül
point2.x = 10

print(point1.x) // Kimenet: 1

// Osztály
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Hivatkozás
circle2.radius = 10.0

print(circle1.radius) // Kimenet: 10.0