Junior — Middle
Qual è la differenza tra il metodo di trasmissione dei dati utilizzando un blocco chiuso (Closure) e quello tramite un delegato (Delegate)?
sobes.tech AI
Risposta dell'AI
Il blocco chiuso (Closure) e il delegato (Delegate) sono meccanismi diversi di trasmissione e gestione di dati/logica.
-
Closure — è una funzione che cattura e conserva il contesto (variabili) dell'ambiente circostante. Permette di trasmettere logica insieme allo stato.
-
Delegate — è un pattern in cui un oggetto trasferisce la responsabilità a un altro attraverso un'interfaccia o protocollo predefinito. In iOS, i delegati sono generalmente implementati tramite protocolli e consentono a un oggetto di notificare un altro sugli eventi.
Differenze:
- Closure — è una funzione con una chiusura, più flessibile e compatta, spesso usata per callback.
- Delegate — è un oggetto con un'interfaccia definita che implementa metodi, fornendo un'interazione più strutturata.
Esempio di closure in Swift:
let closure = { (value: Int) in
print("Il valore è \(value)")
}
closure(10)
Esempio di delegato:
protocol MyDelegate: AnyObject {
func didUpdate(value: Int)
}
class Worker {
weak var delegate: MyDelegate?
func doWork() {
// ...
delegate?.didUpdate(value: 42)
}
}