Delegados en Objective-C [duplicado]

Posible duplicado:
¿Cómo trabaja un delegado en el objetivo C?

Hola comunidad,

He estado tratando de comprender el concepto de delegados en Objective-C. Intenté seguir la documentación, sin embargo, estoy buscando un ejemplo realmente fácil para familiarizarme sobre cómo enviar mensajes entre delegados y si quiero crear un delegado personalizado, ¿cómo puedo ir más allá con eso?

Espero que alguien pueda hacerme comprender mejor este concepto.

preguntado el 10 de mayo de 11 a las 13:05

2 Respuestas

El concepto básico de delegados es delegar decisiones importantes o información a alguna otra instancia de objeto.

En la mayoría de los marcos, utiliza métodos de subclasificación y anulación para conectarse al flujo de la aplicación. Funciona pero los inconvenientes son muchos, por ejemplo:

  • No puedes cambiar el que toma las decisiones sin una subclase completamente nueva.
  • Sin herencia múltiple, solo puede tomar decisiones para un objeto (usted mismo).

Hay cuatro razones por las que un objeto puede querer llamar a un delegado, y cada uno de estos cuatro usa una palabra clave en el nombre del método de delegado para señalar esto. Es solo una convención de nomenclatura, pero debes seguir el patrón si quieres ser un buen ciudadano.

  • Pregunte si debería pasar algo. Por ejemplo: gestureRecognizer:shouldReceiveTouch:
  • Antes de que suceda algo inevitable. Por ejemplo: applicationWillTerminate:.
  • Después de que haya ocurrido algo. Por ejemplo: accelerometer:didAccelerate:
  • Y para recuperar datos, esto es más una fuente de datos que un delegado, pero la línea entre los dos es borrosa. El nombre no contiene un nombre definido, pero debe contener el dato con nombre que se solicita. Por ejemplo: tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath:

Como regla general, el primer argumento de cualquier método delegado debemos ser la instancia de objeto con nombre que solicita la delegación.

contestado el 10 de mayo de 11 a las 18:05

PeyloW, las cuatro razones que ha proporcionado, estas no serán las únicas razones por las que se debe llamar a un delegado, ¿verdad? Quizás yo diría que la razón principal es. Por ejemplo, ¿no podemos también llamar a delegado cuando vamos a "BackGround", también hay ejemplos realmente fáciles de seguir, solo un método rápido de NSLog para obtener una actualización una vez que se ha hecho algo, a través de delegado? - Shawn Sngh

Bueno, para las cosas de fondo, sigo pensando que se aplican las cuatro reglas, si Foo puede ser trasfondo, entonces probablemente tengas uno o más de estos: shouldFooEnterBackground:, fooWillEnterBackground:, fooDidEnterBackground:, y/o tokenForEnteringBackgroundWithFoo:. Apple tiene una aplicación de muestra llamada PhotoPicker que es un buen punto de partida, usa delegados de UIKit y define / usa un delegado propio, todo en solo dos clases pequeñas: developer.apple.com/library/ios/#samplecode/PhotoPicker - PeyloW

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.