Sobes.tech
Middle

Qual é a estrutura de gestão?

sobes.tech IA

Resposta da IA

Existem três tipos principais de despacho de métodos em Swift:

  1. 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")
        }
    }
    
  2. 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")
        }
    }
    
  3. 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)