Comment accéder aux objets de classe et aux objets de structure en Swift?
sobes.tech IA
Réponse de l'IA
Aux objets de classe — par référence; aux objets de structure — par valeur.
Classes (type de référence):
Lorsqu'une instance de classe est assignée à une variable ou constante, une référence à cette même instance est assignée. Les modifications via une référence seront visibles sur toutes les références pointant vers cette instance.
class MaClasse {
var valeur: Int = 0
}
let objet1 = MaClasse() // Création d'une instance
let objet2 = objet1 // objet2 pointe maintenant vers la même instance
objet1.valeur = 10 // Modification via objet1
print(objet2.valeur) // Affichera 10 - la modification est visible via objet2
Structures (type par valeur):
Lorsqu'une instance de structure est assignée à une variable ou constante, une copie de cette instance est créée. Chaque variable/constante contient sa propre copie indépendante des données. Les modifications dans une copie n'affectent pas les autres.
struct MaStructure {
var valeur: Int = 0
}
var structure1 = MaStructure() // Création d'une instance
var structure2 = structure1 // Une copie de structure1 est créée
structure1.valeur = 20 // Modification via structure1
print(structure2.valeur) // Affichera 0 - structure2 reste inchangée
Comparaison:
| Caractéristique | Classes | Structures |
|---|---|---|
| Type | Référence | Valeur |
| Affectation | La référence est copiée | La valeur est copiée |
| Modifications | Visibles sur toutes les références | Affectent uniquement la copie |
| Héritage | Supporté | Non supporté |
| Identité | Peut être vérifiée (===) |
Pas de concept d'identité |
Le choix entre classe et structure dépend des besoins. Les structures sont souvent utilisées pour de petits types de données simples représentant une valeur (par exemple, Point, Size, Range). Les classes sont utilisées pour des types de données plus complexes nécessitant une sémantique de référence, l'héritage ou la gestion du cycle de vie de l'objet (par exemple, UIViewController, UIView).