¿Qué es delegar en el desarrollo de iOS?

Explicación de Apple: Competencias principales del cacao

En el desarrollo moderno de iOS, generalmente configura sus objetos como delegados a objetos de marco. De esta manera, el marco puede funcionar todo bajo la magia del capó y puede proporcionar código en puntos de extensión conocidos para hacer lo que desee. Algunos ejemplos:

– El usuario tocó una fila de la vista de tabla, así que envíe un mensaje al delegado de la Vista de tabla
– Un Core Location Manager tiene nuevos datos para la ubicación del usuario, por lo que envía un mensaje a su delegado.
– Una aplicación acaba de iniciarse, por lo que envía un mensaje didFinishLaunching a su delegado de aplicaciones.

Lo que pasa con la delegación es que, incluso si no responde a los mensajes, probablemente no importe (verifique la definición del protocolo para ver si se requieren métodos): por ejemplo, no puede hacer nada cuando el usuario toca una fila de vista de tabla si lo desea.

En versiones anteriores de iOS, probablemente habría establecido un delegado si necesitara completar un trabajo de forma asincrónica. Pero ahora, eso suele resolverse mejor con bloques. O bien, es posible que haya tenido un controlador de vista que visualizó modalmente y necesitaba tener un código para descartar los datos de VC / pass, pero eso se resuelve mejor hoy con Unwind Segues.

Creo que otra respuesta a esta pregunta es bastante buena, pero trataré de agregar mis dos centavos sobre por qué el patrón de delegación se usa comúnmente en Cocoa Touch. La delegación, simplemente, se usa para la comunicación ciega entre clases. La mayoría de las veces, desea diseñar clases que sean muy genéricas y que se puedan usar en muchos lugares (agregadas a múltiples lugares en su aplicación o incluso a múltiples aplicaciones).

Por ejemplo, puede pegar un UITableView o UIScrollView en cualquier lugar que desee, pero para que así sea, esas clases no pueden ser demasiado específicas. No puede hacer que una vista de tabla sepa qué hacer cuando un usuario hace clic en una celda, ya que es específica de la aplicación . Algunas aplicaciones desean que se agreguen filas, mientras que otras desean que se realicen segues y, por lo tanto, ese comportamiento específico no se puede ubicar en la vista de tabla. Por lo tanto, delegamos esa responsabilidad ciegamente a otra clase que es responsable de proporcionar ese comportamiento.

Delegar es simplemente un medio de comunicación entre objetos de aplicaciones iOS. Puede pensar en la delegación como una forma simple de conectar objetos y comunicarse entre sí. En otras palabras, podemos decir que delegado permite que un objeto envíe un mensaje a otro objeto cuando ocurre cualquier evento. Vamos a entender esto con un ejemplo de la vida real. Supongamos que hay una oficina con 5 mostradores. Entras en la oficina y vas al mostrador 1 y envías algunos detalles sobre ese mostrador.

Ahora sus datos deben pasar por algún proceso que el contador 3 sepa pero el contador 1 no. Por lo tanto, el contador 1 le indicará que espere un poco y pase sus datos al contador 3 para completar el proceso. En este caso, el contador 3 es el delegado que maneja sus eventos, que se refiere por el contador 1. Una vez que el contador 3 completa el procesamiento de sus datos, envía el mensaje al contador 1 informando que el proceso ha finalizado y puede continuar ahora.

Consulte este artículo para obtener una explicación detallada del delegado de iOS.

Tutorial de delegados de iOS

iOS – Delegados – Delegados Ejemplo para Delegar Asumamos que un objeto A llama a un objeto B para realizar una acción. Una vez que se completa la acción, el objeto A debe saber que B ha completado la tarea y tomar las medidas necesarias. Esto se logra con la ayuda de los delegados. Los conceptos clave en el ejemplo anterior son -A es un objeto delegado de BB tendrá una referencia de AA implementará los métodos delegados de BB notificará a A a través de los métodos delegados.

según mi sugerencia personal, vaya a “CodesRoom.com” y se aclarará toda su duda

Feliz aprendizaje..!