2012-06-19 17 views
5

He estado aprendiendo sobre Delegación y Fuentes de datos para la programación de iOS y necesito preguntar, ¿hay alguna diferencia que deba hacer cuando crea un protocolo de fuente de datos que un protocolo de delegado?Delegación y origen de datos iOS

Además, ¿cómo puedo implementar un delegado para muchos objetos iguales en un delegado? Ejemplo de un objeto con muchas alertas personalizadas únicas.

--Edit--

Un ejemplo para la segunda parte:

Un objeto que tiene cuatro alertas diferentes, cada uno con diferentes botones. Dado que el objeto necesita dictar cómo funciona cada botón, es un delegado para las alertas. ¿Cómo establecería los métodos de delegado para determinar cada alerta?

Respuesta

14

Ambos tipos de objetos se comportan más o menos de la misma manera, es una cuestión de lo que hacen esa es la pregunta.

Un objeto de tipo de delegado responde a las acciones que realiza otro objeto. Por ejemplo, el protocolo UITableViewDelegate tiene métodos tales como didSelectRowAtIndexPath para realizar acciones sobre un usuario que selecciona una fila particular en una tabla.

Considerando que un objeto tipo de fuente de datos da datos a otro objeto. Por ejemplo, nuevamente, el protocolo UITableViewDataSource tiene métodos como cellForRowAtIndexPath y numberOfRowsInSection que dictan lo que se debe mostrar en la tabla.

No hay ninguna diferencia dura entre los dos en términos de compilación, es simplemente un estilo de codificación para hacer que los objetos hagan lo que sea muy claro para el usuario del código.

EDIT:

para responder a su segunda pregunta: si desea que cada alerta para responder de manera diferente, usted tendrá que escribir un delegado diferente para cada alerta. Por ejemplo, si una de sus alertas es una alerta de confirmación de guardado (quizás va a sobrescribir un archivo y aparece para confirmar que es lo que el usuario desea hacer), usted tendría un objeto como:

@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate> 
@end 

Y en el @implementation para SaveConfirmAlertDelegate implementaría la función de guardar apropiada dependiendo del botón que el usuario presionó en la alerta.

Cuando crea una vista de alerta, especifica cuál debe ser el objeto delegado, esto no tiene que ser self. Puede tener sus cuatro delegados almacenados como objetos diferentes y configurarlos en las alertas según sea necesario.

Espero que esto aclare las cosas

+0

Gracias por explicar mi primer problema. Agregué un ejemplo a mi pregunta. – RMDan

+0

@RMDan He añadido una explicación adicional para su segunda pregunta, espero que aclare un poco las cosas –

+0

Eso tiene mucho sentido. Tendré que aprender más sobre la delegación, pero está empezando a tener sentido. – RMDan

Cuestiones relacionadas