Sobes.tech
Junior — Middle

Milline on erinevus andmete edastamise meetodil, kasutades suletud plokki (Closure), ja edastamisel delegaadi (Delegate) kaudu?

sobes.tech AI

Vastus AI-lt

The closed block (Closure) and delegate are different mechanisms for data/logic transfer and processing.

  • Closure — is a function that captures and retains the context (variables) from the surrounding scope. It allows passing logic along with state.

  • Delegate — is a pattern where one object transfers responsibility to another via a predefined interface or protocol. In iOS, delegates are usually implemented through protocols and allow an object to notify another about events.

Differences:

  • Closure — a function with a closure, more flexible and compact, often used for callbacks.
  • Delegate — an object with a defined interface that implements methods, providing a more structured interaction.

Example of closure in Swift:

let closure = { (value: Int) in
    print("Value is \(value)")
}
closure(10)

Example of delegate:

protocol MyDelegate: AnyObject {
    func didUpdate(value: Int)
}

class Worker {
    weak var delegate: MyDelegate?
    func doWork() {
        // ...
        delegate?.didUpdate(value: 42)
    }
}