Los delegados son un patrón que permite que algún objeto notifique a otro objeto cuando ocurre algo. Muchos métodos de delegado comienzan con "will" o "did" que se llaman antes y después de que ocurra un evento, respectivamente.
Digamos que tiene un UITableView
, y desea saber cuándo el usuario toca una celda para que pueda procesar su elección. Asigna un delegado a la vista de tabla que implementa el método delegado tableView:didSelectRowAtIndexPath:
.
Lo bueno de este enfoque es que la vista de tabla no tiene que saber o preocuparse acerca de qué es este otro objeto delegado o cómo funciona. Permite que el objeto que genera los eventos se mantenga enfocado y limpio, solo se ocupa de su propio estado. Cuando haga algo notable, enviará un mensaje a su delegado. Y el objeto delegado no necesita saber nada sobre el estado interno del otro objeto. Solo necesita saber que hizo algo importante.
Y esto encaja bien con el enfoque Modelo/Vista/Controlador (MVC) del iPhone SDK. La Vista solo debe preocuparse por cómo se muestra y el controlador es un delegado de la vista cuando cambian las cosas.
La programación con delegados no es una característica de idioma requerida Objective-C. Es simplemente un patrón de diseño que el SDK usa bastante. Pero es un patrón bastante bueno que puede ayudar a mantener su código más limpio.
Potencialmente relacionado con http://stackoverflow.com/questions/3183146/what-do-mean-by-delegate-in-iphone-application y http://stackoverflow.com/questions/645449/how-to- use-custom-deletes-in-objective-c –
Véase también http://stackoverflow.com/questions/1349706/little-confused-on-delegates-in-objective-c –