Junior
Qual è la differenza tra classi e strutture nel linguaggio di programmazione Swift?
sobes.tech AI
Risposta dell'AI
Le classi sono tipi di riferimento, le strutture sono tipi di valore.
Principali differenze:
- Ereditarietà: Le classi supportano l'ereditarietà, le strutture no.
- Casting di tipo: Permette di verificare e interpretare il tipo di un'istanza di classe a runtime.
- Deinitialization: Le classi hanno deinit per liberare risorse, le strutture no.
- Contatore di riferimenti: Le classi usano ARC per la gestione della memoria. Le strutture vengono copiate durante il passaggio o l'assegnazione (può usare copy-on-write per ottimizzazione).
- Metodi mutanti: I metodi che modificano le proprietà di un'istanza di struttura o enum devono essere marcati con
mutating. Per le classi, non è necessario.
Esempio di creazione:
// Struttura
struct Point {
var x: Int
var y: Int
}
// Classe
class Circle {
var radius: Double
var center: Point
init(radius: Double, center: Point) {
self.radius = radius
self.center = center
}
}
Esempio di comportamento in assegnazione:
// Struttura
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Viene creata una copia
point2.x = 10
print(point1.x) // Output: 1
// Classe
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Assegnazione di riferimento
circle2.radius = 10.0
print(circle1.radius) // Output: 10.0