2010-07-24 9 views
5

Soy un programador nuevo iPhonepor qué y dónde utilizar un delegado en el objetivo c

He creado algunos pequeños puntos de vista sin delegados .... Si un programa puede funcionar sin un delegado, entonces ¿por qué usarlos . Lo que es necesario para ellos, he visto algunos programas en la red con delegados.

Estoy confundido, responda.

+0

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 –

+0

Véase también http://stackoverflow.com/questions/1349706/little-confused-on-delegates-in-objective-c –

Respuesta

10

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.

+0

muchas gracias mch – Saawan