Junior
Quelle est la différence entre les classes et les structures dans le langage de programmation Swift?
sobes.tech IA
Réponse de l'IA
Les classes sont des types de référence, les structures sont des types de valeur.
Principales différences :
- Héritage : Les classes supportent l'héritage, pas les structures.
- Caste de type : Permet de vérifier et d'interpréter le type d'une instance de classe à l'exécution.
- Désinitialisation : Les classes ont des destructeurs (
deinit) pour libérer des ressources, pas les structures. - Comptage de références : Les classes utilisent le comptage automatique de références (ARC) pour gérer la mémoire. Les structures sont copiées lors du passage ou de l'assignation (peut utiliser copy-on-write pour l'optimisation).
- Méthodes mutantes : Les méthodes modifiant les propriétés d'une instance de structure ou d'énumération doivent être marquées avec le mot-clé
mutating. Ce n'est pas nécessaire pour les classes.
Exemple de création :
// Structure
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
}
}
Exemple de comportement lors de l'assignation :
// Structure
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Création d'une copie
point2.x = 10
print(point1.x) // Affiche : 1
// Classe
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Assignation de référence
circle2.radius = 10.0
print(circle1.radius) // Affiche : 10.0