Qual é a estrutura de gestão?
sobes.tech IA
Resposta da IA
Existem três tipos principais de despacho de métodos em Swift:
-
Despacho direto (Direct Dispatch): O mais rápido. O compilador sabe exatamente qual método chamar durante a compilação. Usado por padrão para estruturas, classes com métodos final, métodos privados.
struct MyStruct { func directMethod() { // Despacho direto print("Direct") } } -
Despacho por tabela (Table Dispatch): Usado para métodos de classes (não final). Cada classe tem uma tabela de métodos virtuais (vtable), onde cada método tem um índice único. O compilador acessa a vtable em tempo de execução para encontrar a implementação necessária. Permite polimorfismo.
class MyClass { func tableMethod() { // Despacho por tabela print("Table") } } class MySubClass: MyClass { override func tableMethod() { // Método sobrescrito, também usa a tabela print("Table override") } } -
Despacho por mensagens (Message Dispatch): O mais flexível, mas também o mais lento. Usado para métodos objc (marcados com
@objc dynamic). O sistema Objective-C busca em tempo de execução a implementação do método pelo seu nome (seletor).@objc class MyObjcClass: NSObject { @objc dynamic func messageMethod() { // Despacho por mensagens (para ObjC, dinâmico) print("Message") } }
| Tipo de despacho | Velocidade | Flexibilidade (polimorfismo, dinamismo) | Onde é aplicado por padrão |
|---|---|---|---|
| Direto | Rápido | Baixa | Estruturas, classes com métodos final, privados |
| Por tabela | Médio | Médio | Métodos de classes |
| Por mensagens | Lento | Alta | Métodos @objc dynamic (Objective-C) |