Junior — Middle
V čem se liší metoda přenosu dat pomocí uzavřeného bloku (Closure) od přenosu přes delegáta (Delegate)?
sobes.tech AI
Odpověď od AI
Uzavřený blok (Closure) a delegát (Delegate) jsou různé mechanismy přenosu a zpracování dat/logiky.
-
Closure — je funkce, která zachytává a uchovává kontext (proměnné) z okolního prostředí. Umožňuje přenášet logiku spolu se stavem.
-
Delegate — je vzor, při kterém jeden objekt předává odpovědnost jinému prostřednictvím předem definovaného rozhraní nebo protokolu. V iOS jsou delegáti obvykle implementováni prostřednictvím protokolů a umožňují objektu informovat jiný o událostech.
Rozdíly:
- Closure — je funkce s uzávěrem, flexibilnější a kompaktnější, často používaná pro zpětné volání.
- Delegate — je objekt s definovaným rozhraním, které implementuje metody, zajišťující strukturovanější interakci.
Příklad closure v Swift:
let closure = { (value: Int) in
print("Hodnota je \(value)")
}
closure(10)
Příklad delegáta:
protocol MyDelegate: AnyObject {
func didUpdate(value: Int)
}
class Worker {
weak var delegate: MyDelegate?
func doWork() {
// ...
delegate?.didUpdate(value: 42)
}
}