Junior
Care este diferența dintre clase și structuri în limbajul de programare Swift?
sobes.tech AI
Răspuns de la AI
Clasele sunt tipuri de referință, structurile sunt tipuri de valoare.
Diferențele principale:
- Moștenire: Clasele suportă moștenirea, structurile nu.
- Casting de tip: Permite verificarea și interpretarea tipului unei instanțe de clasă în timpul execuției.
- Deinitializare: Clasele au destructori (
deinit) pentru eliberarea resurselor, structurile nu. - Numărare de referințe: Clasele folosesc numărătoarea automată a referințelor (ARC) pentru gestionarea memoriei. Structurile sunt copiate la transmitere sau atribuire (poate aplica copy-on-write pentru optimizare).
- Metode mutante: Metodele care modifică proprietățile unei instanțe de structură sau enumerare trebuie marcate cu cuvântul cheie
mutating. Pentru clase, acest lucru nu este necesar.
Exemplu de creare:
// Structură
struct Point {
var x: Int
var y: Int
}
// Clasă
class Circle {
var radius: Double
var center: Point
init(radius: Double, center: Point) {
self.radius = radius
self.center = center
}
}
Exemplu de comportament la atribuire:
// Structură
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Se creează o copie
point2.x = 10
print(point1.x) // Afișează: 1
// Clasă
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Atribuire de referință
circle2.radius = 10.0
print(circle1.radius) // Afișează: 10.0