Junior — Middle
Qual é a diferença entre o método de transmissão de dados usando um bloco fechado (Closure) e usando um delegado (Delegate)?
sobes.tech IA
Resposta da IA
O bloco fechado (Closure) e o delegado (Delegate) são mecanismos diferentes de transmissão e processamento de dados/lógica.
-
Closure — é uma função que captura e mantém o contexto (variáveis) do escopo circundante. Permite transmitir lógica juntamente com o estado.
-
Delegate — é um padrão em que um objeto transfere a responsabilidade para outro através de uma interface ou protocolo predefinido. No iOS, os delegados geralmente são implementados através de protocolos e permitem que um objeto notifique outro sobre eventos.
Diferenças:
- Closure — é uma função com fechamento, mais flexível e compacta, frequentemente usada para callbacks.
- Delegate — é um objeto com uma interface definida que implementa métodos, proporcionando uma interação mais estruturada.
Exemplo de closure em Swift:
let closure = { (value: Int) in
print("O valor é \(value)")
}
closure(10)
Exemplo de delegado:
protocol MyDelegate: AnyObject {
func didUpdate(value: Int)
}
class Worker {
weak var delegate: MyDelegate?
func doWork() {
// ...
delegate?.didUpdate(value: 42)
}
}