Junior — Middle
V čom sa líši spôsob prenosu dát pomocou uzavretého bloku (Closure) od prenosu cez delegáta (Delegate)?
sobes.tech AI
Odpoveď od AI
Uzavretý blok (Closure) a delegát (Delegate) sú rôzne mechanizmy prenosu a spracovania dát/logiky.
-
Closure — je funkcia, ktorá zachytáva a uchováva kontext (premenné) z okolia. Umožňuje prenášať logiku spolu so stavom.
-
Delegate — je vzor, pri ktorom jeden objekt prenáša zodpovednosť na iný prostredníctvom vopred definovaného rozhrania alebo protokolu. V iOS sú delegáti zvyčajne implementovaní prostredníctvom protokolov a umožňujú objektu informovať iný o udalostiach.
Rozdiely:
- Closure — je funkcia s uzáverom, flexibilnejšia a kompaktnejšia, často používaná pre spätné volania.
- Delegate — je objekt s definovaným rozhraním, ktorý implementuje metódy, zabezpečujúc štruktúrovanejšiu interakciu.
Príklad closure v Swift:
let closure = { (value: Int) in
print("Hodnota je \(value)")
}
closure(10)
Príklad delegáta:
protocol MyDelegate: AnyObject {
func didUpdate(value: Int)
}
class Worker {
weak var delegate: MyDelegate?
func doWork() {
// ...
delegate?.didUpdate(value: 42)
}
}