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
Gracias por explicar mi primer problema. Agregué un ejemplo a mi pregunta. – RMDan
@RMDan He añadido una explicación adicional para su segunda pregunta, espero que aclare un poco las cosas –
Eso tiene mucho sentido. Tendré que aprender más sobre la delegación, pero está empezando a tener sentido. – RMDan