¿Cuál es la estructura de la gestión?
sobes.tech AI
Respuesta de la IA
Existen tres tipos principales de despacho de métodos en Swift:
-
Despacho directo (Direct Dispatch): El más rápido. El compilador sabe exactamente qué método llamar durante la compilación. Se usa por defecto para estructuras, clases con métodos final, métodos privados.
struct MyStruct { func directMethod() { // Despacho directo print("Direct") } } -
Despacho por tabla (Table Dispatch): Se usa para métodos de clases (no final). Cada clase tiene una tabla de métodos virtuales (vtable), donde cada método tiene un índice único. El compilador accede a la vtable en tiempo de ejecución para encontrar la implementación necesaria. Permite polimorfismo.
class MyClass { func tableMethod() { // Despacho por tabla print("Table") } } class MySubClass: MyClass { override func tableMethod() { // Método sobrescrito, también usa la tabla print("Table override") } } -
Despacho por mensajes (Message Dispatch): El más flexible, pero también el más lento. Se usa para métodos objc (marcados con
@objc dynamic). El sistema Objective-C busca en tiempo de ejecución la implementación del método por su nombre (selector).@objc class MyObjcClass: NSObject { @objc dynamic func messageMethod() { // Despacho por mensajes (para ObjC, dinámico) print("Message") } }
| Tipo de despacho | Velocidad | Flexibilidad (polimorfismo, dinamismo) | Dónde se aplica por defecto |
|---|---|---|---|
| Directo | Rápido | Baja | Estructuras, clases/métodos final, privados |
| Por tabla | Media | Media | Métodos de clases |
| Por mensajes | Lento | Alta | Métodos @objc dynamic (Objective-C) |