Quelle est la structure de la gestion?
sobes.tech IA
Réponse de l'IA
Il existe trois principaux types de dispatch de méthodes en Swift:
-
Dispatch direct (Direct Dispatch): Le plus rapide. Le compilateur sait exactement quelle méthode appeler lors de la compilation. Utilisé par défaut pour les structures, classes avec méthodes final, méthodes privées.
struct MyStruct { func directMethod() { // Dispatch direct print("Direct") } } -
Dispatch par table (Table Dispatch): Utilisé pour les méthodes de classes (non final). Chaque classe possède une table de méthodes virtuelles (vtable), où chaque méthode a un indice unique. Le compilateur accède à la vtable au moment de l'exécution pour trouver l'implémentation nécessaire. Permet le polymorphisme.
class MyClass { func tableMethod() { // Dispatch par table print("Table") } } class MySubClass: MyClass { override func tableMethod() { // Méthode redéfinie, utilise aussi la table print("Table override") } } -
Dispatch par messages (Message Dispatch): Le plus flexible, mais aussi le plus lent. Utilisé pour les méthodes objc (marquées avec
@objc dynamic). Le système Objective-C recherche en temps d'exécution l'implémentation de la méthode par son nom (sélecteur).@objc class MyObjcClass: NSObject { @objc dynamic func messageMethod() { // Dispatch par messages (pour ObjC, dynamique) print("Message") } }
| Type de dispatch | Vitesse | Flexibilité (polymorphisme, dynamisme) | Où il est utilisé par défaut |
|---|---|---|---|
| Direct | Rapide | Faible | Structures, classes/méthodes final, privées |
| Par table | Moyenne | Moyenne | Méthodes de classes |
| Par messages | Lent | Élevée | Méthodes @objc dynamic (Objective-C) |