En el desarrollo de Mac / iOS, ¿cuál es la diferencia entre un objeto de aplicación y un delegado de aplicación?

Explicaré esto de una manera que no sea de computadora, ya que creo que será más claro de entender.

Tomemos un trabajo. Un objeto eres tú, un colega, tu jefe; su computadora, su archivador. Básicamente todos los elementos identificables individuales y cosas que te rodean. Cada uno tiene un propósito, ya sea realizar acciones, almacenar cosas o responder a las entradas.

Cuando su jefe le pide que haga un trabajo para él, él le delega el trabajo. En este caso, ahora eres el delegado . Un delegado es un objeto que asume la responsabilidad de realizar un trabajo para otra persona.


Volviendo al mundo de la programación, su objeto de clase es cualquier cosa, desde un modelo de usuario hasta un controlador de vista o servicio. Su clase se convierte en delegado cuando necesita realizar una tarea en nombre de otra cosa.

Un ejemplo en el que se encontrará rápidamente con esto es con vistas de tabla. Una vista de tabla es un objeto y el controlador que contiene también es un objeto. La vista de tabla requiere cierta información para funcionar.

La tabla necesita saber cuántas filas tiene, cómo debe verse cada celda y qué sucede cuando interactúa con una celda. Ahora la vista de tabla necesita obtener estos datos de alguna parte y aquí es donde interviene su objeto “delegado”.

Le dice a la tabla que un objeto específico será el delegado para estas tareas.

Cuando la tabla quiere saber cuántas filas debe tener, le pide al delegado que se la diga. Si quiere saber cómo se ve una celda, nuevamente le pedirá al delegado que se lo diga.

Esto permite que la tabla sea reutilizable en muchos proyectos y escenarios, ya que no necesita saber cómo funciona su aplicación. Su delegado tiene el trabajo de decirlo.

El patrón de delegado se replica en muchos objetos diferentes en el desarrollo de OS X / iOS. Las tablas, los campos de texto, los objetos de aplicación tienen delegados. En la terminología de Java, uno podría pensar en ellos como oyentes de eventos. Un objeto le dice a su delegado sobre los cambios que le han sucedido. Las tablas les dicen a sus delegados si están escuchando que sus filas se tocan, se deslizan, etc. Los campos de texto les dicen a sus delegados sobre el texto que se está editando, agregando o eliminando. Los objetos de la aplicación informan a su delegado sobre las cosas que le han sucedido a la aplicación en su conjunto, por ejemplo, que se acaba de iniciar, que se ha despertado del sueño, tiene poca memoria, está a punto de cerrarse, etc.

Las personas que son nuevas en el desarrollo de iOS / OS X a menudo se confunden con los delegados porque en muchos otros marcos uno logra el mismo tipo de cosas al subclasificar los objetos que notifican a los delegados sobre los cambios.

Una forma de comprender mejor la motivación detrás del uso de delegados sería leer sobre el patrón de diseño de la estrategia, por ejemplo, y los beneficios de la composición sobre la herencia.

Un objeto es una instancia de una clase. Los delegados son otra historia. Investigue un poco sobre delegados y protocolos. Le recomiendo especialmente que vea el video 6, llamado Protocolos y delegación en iTunes U de ‘Desarrollando aplicaciones iOS 8 con Swift’ de la Universidad de Stanford.

Los delegados están allí para pasar mensajes a otras clases, utilizando protocolos que debe implementar en, digamos, un controlador.

More Interesting

Si el iPhone 5 deja de recibir actualizaciones después de la próxima actualización de iOS, ¿esto lo deja vulnerable a los piratas informáticos?

¿Cuál es la mejor solución de etiqueta blanca para una aplicación de chat iOS / Android?

¿Cuáles son algunos ejemplos notables de malware que ha comprometido los dispositivos iOS?

Si Steve Jobs tenía un iPhone 5 en 1997, ¿con qué rapidez y eficacia podría aplicarle ingeniería inversa al mercado?

¿Puedo instalar iOS o Android en un Nokia Lumia?

Quiero experimentar iOS, ¿es el iPhone 5s una buena opción?

¿Apple instigará procedimientos legales contra Google por supuestas infracciones de patentes con la plataforma Android?

¿Cuáles son los principales sitios gratuitos de revisión de aplicaciones de iOS?

¿Qué es mejor, Android Lollipop o iOS 8?

¿Vale la pena la actualización de iOS 11? ¿Realmente está gastando mucha batería en un iPhone 7?

¿Por qué razón tomaría aproximadamente 5 minutos después de un reinicio de iPhone para que aparezca el logotipo de Apple?

¿Alguien siente que la calidad del software de Apple se está desvaneciendo? ¿Por qué está pasando esto?

Cómo hacer jailbreak para iOS 8.3

¿Cuáles son algunos de los mejores juegos móviles en plataformas iOS o Android en términos de gráficos?

¿Cómo es que cuando hago clic en un enlace de LinkedIn en iOS Safari, la aplicación de LinkedIn no se inicia, pero cuando hago clic en un enlace de Twitter, se inicia la aplicación de Twitter?