Sobes.tech
Junior — Middle

Kokia yra delegatų vaidmuo jūsų kode ir kam jie naudojami?

sobes.tech AI

Atsakymas iš AI

iOS delegatai yra projektavimo šablonas, leidžiantis vienam objektui perduoti atsakomybę už tam tikrų veiksmų vykdymą kitam objektui. Tai būdas organizuoti atsiliepimus ir komunikaciją tarp objektų be stiprios priklausomybės.

Delegatų vaidmuo:

  • leidžia objektui pranešti kitam apie įvykius.
  • suteikia elgesio pritaikymą be paveldėjimo.
  • supaprastina atsakomybės pasidalijimą.

Pavyzdys: UITableView naudoja delegatą, kad apdorotų langelių pasirinkimą. Klasė, įgyvendinanti UITableViewDelegate protokolą, gauna pranešimus apie naudotojo veiksmus.

protocol MyDelegate: AnyObject {
    func didTapButton()
}

class MyClass {
    weak var delegate: MyDelegate?

    func buttonTapped() {
        delegate?.didTapButton()
    }
}

class ViewController: UIViewController, MyDelegate {
    let myObject = MyClass()

    override func viewDidLoad() {
        super.viewDidLoad()
        myObject.delegate = self
    }

    func didTapButton() {
        print("Mygtukas paspaustas")
    }
}