Sobes.tech
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)
    }
}