2010-06-05 16 views

Respuesta

14

Un delegado es un objeto que generalmente reacciona a algún evento en otro objeto y/o puede afectar el comportamiento de otro objeto. Los objetos trabajan juntos por el bien mayor de completar una tarea. Por lo general, un objeto delegado será compartido por muchos otros objetos que tienen una tarea más específica para llevar a cabo. El delegado en sí será más abstracto y debería ser muy reutilizable para diferentes tareas. El objeto que contiene el delegado generalmente envía al delegado un mensaje cuando ocurre un evento desencadenado, dando al delegado la oportunidad de llevar a cabo su tarea especificada.

Hay más documentación here que usted debe leer para entender el patrón de delegado en Cacao y el tacto, sobre todo en cómo se utiliza de delegación entre UIWindow y UIView. Es un patrón de diseño integral en la arquitectura de iPhone y uno que debe ser dominado si desea diseñar una aplicación limpia.

+2

el enlace está muerto – lindenrovio

+0

otro enlace útil aquí - [enlace] (https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/DelegatesandDataSources/DelegatesandDataSources.html) –

3

Delegation is a pattern y el término significa lo mismo en Cocoa.

Un delegado no está implementada en un UIViewController. Los diferentes tipos de controladores de vista son assign ed un delegado para manejar ciertas tareas. Uno de los mejores ejemplos (si estamos hablando de iPhone) es el UITableViewDelegate, que se llama para hacer ciertas cosas cuando ocurren ciertos eventos relacionados con la tabla.

5

Los delegados se utilizan para delegar tareas de objetos a su propietario (o cualquier objeto, en realidad). Una buena razón para esto es que facilita el uso de la composición en lugar de la herencia. Los delegados son una referencia a un objeto que se ajusta a un protocolo específico, por lo que puede garantizar que implementará los métodos necesarios. Un buen ejemplo es UIApplicationDelegate. Observe cómo los métodos delegados (del protocolo) usan verbos que applicationDid, applicationShould, applicationWill, etc. Usualmente delegan métodos, soliciten permiso para hacer algo (y elijan hacerlo de esta manera, en un método, en lugar de solo con una propiedad BOOL , para mayor flexibilidad) o notificar al delegado de un evento que sucederá o que sucedió.

0

El concepto de delegación es muy común en iOS. Un objeto a menudo dependerá de otro objeto para ayudarlo con ciertas tareas. Esta separación de preocupaciones mantiene el sistema simple ya que cada objeto hace solo lo que es bueno y permite que otros objetos se encarguen del resto. La vista de tabla ofrece un gran ejemplo de esto.

1

Un delegado se utiliza para comunicar/pasar datos b/w dos objetos de una clase/estructura para completar una tarea. Por ejemplo: considere firstVC (emisor o delegador o CEO) que envía datos confidenciales a secondVC (receptor o delegado o secretario). Esto se realiza haciendo secondVC se ajuste a un

protocol passDataDelegate { func passdata(data: String) } 

class secondVC : UIViewController, passDataDelegate { 
func passdata(data: String) { 
    print("CEO passed //(data)") 
    } 
} 

class firstVC : UIViewController { 
    var delegate : passDataDelegate? 
} 

Ahora crear objetos de ambos firstVC & secondVC

let sender = firstVC() 
let receiver = secondVC() 

Dado que, receptor conforma al protocolo de passDataDelegate. Por lo tanto, está teniendo el tipo ya sea como UIViewController o passDataDelegate porque si una clase se ajusta a un protocolo, entonces el objeto de su clase puede tener el protocolo como tipo.

Por lo tanto, asignar sender.delegate = receiver

Ahora, podemos CEO (remitente) puede transmitir datos a Secretario (receptor) a través de su propiedad delegado como

sender.delegate?.passdata("Confidential data") 

Output: CEO passed Confidential data 

Ahora el Secretario (receptor) pueden utilizar esos datos para completar su tarea adicional.