2010-06-05 8 views

Antwort

14

Ein Delegat ist ein Objekt, das normalerweise auf ein Ereignis in einem anderen Objekt reagiert und/oder das Verhalten eines anderen Objekts beeinflussen kann. Die Objekte arbeiten zusammen, um eine Aufgabe zu vervollständigen. Normalerweise wird ein Delegatobjekt von vielen anderen Objekten gemeinsam genutzt, die eine spezifischere Aufgabe ausführen müssen. Der Delegat selbst wird abstrakter sein und sollte für verschiedene Aufgaben sehr wiederverwendbar sein. Das Objekt, das den Delegaten enthält, sendet dem Stellvertreter in der Regel eine Nachricht, wenn ein ausgelöstes Ereignis auftritt, und gibt dem Stellvertreter die Möglichkeit, seine angegebene Aufgabe auszuführen.

Es gibt mehr Dokumentation here, die Sie lesen sollten, um das Delegatenmuster in Cocoa und Cocoa touch zu verstehen, insbesondere mit der Delegierung zwischen UIWindow und UIView. Es ist ein integrales Entwurfsmuster in der iPhone-Architektur und eines, das beherrscht werden sollte, wenn Sie eine saubere Anwendung entwerfen möchten.

+2

der Link ist tot – lindenrovio

+0

ein weiterer nützlicher Link hier - [link] (https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/DelegatesandDataSources/DelegatesandDataSources.html) –

3

Delegation is a pattern und der Begriff bedeutet das gleiche in Kakao.

Ein Delegat ist nicht implementiert in ein UIViewController. Verschiedene Arten von View-Controllern sind assign ed ein Delegat, um bestimmte Aufgaben zu behandeln. Eines der besten Beispiele (wenn wir iPhone sprechen) ist die UITableViewDelegate, die aufgerufen wird, bestimmte Dinge zu tun, wenn bestimmte tabellenbezogene Ereignisse auftreten.

5

Delegaten werden verwendet, um Aufgaben von Objekten an ihren Besitzer (oder jedes Objekt) zu delegieren. Ein guter Grund dafür ist, dass es einfacher ist, Komposition statt Vererbung zu verwenden. Delegierte sind ein Verweis auf ein Objekt, das einem bestimmten Protokoll entspricht, damit Sie sicherstellen können, dass die erforderlichen Methoden implementiert werden. Ein gutes Beispiel ist UIApplicationDelegate. Beachten Sie, dass die delegierten Methoden (aus dem Protokoll) Verben verwenden, die applicationDid, applicationShould, applicationWill usw. Normalerweise delegieren Methoden entweder um Erlaubnis, etwas zu tun (und wählen dies in einer Methode anstatt mit einer BOOL-Eigenschaft) , für mehr Flexibilität) oder benachrichtigen Sie den Delegierten eines Ereignisses, das passieren wird oder passiert ist.

0

Das Delegierungskonzept ist in iOS sehr verbreitet. Ein Objekt ist oft auf ein anderes Objekt angewiesen, um es bei bestimmten Aufgaben zu unterstützen. Diese Trennung von Bedenken hält das System einfach, da jedes Objekt nur das tut, was es gut kann und andere Objekte sich um den Rest kümmern. Die Tabellenansicht bietet ein gutes Beispiel dafür.

1

Ein Delegat wird verwendet, um zwei Objekte einer Klasse/Struktur zu übergeben, um eine Aufgabe abzuschließen. Zum Beispiel: Betrachten Sie firstVC (Sender oder Delegator oder CEO), die vertrauliche Daten an secondVC sendet (Empfänger oder Delegierter oder Sekretär). Dies geschieht, indem secondVC auf eine Objekte sowohl firstVC & secondVC

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

erstellen

protocol passDataDelegate { func passdata(data: String) } 

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

class firstVC : UIViewController { 
    var delegate : passDataDelegate? 
} 

konform Nun Da Empfänger Protokoll entspricht passDataDelegate. Es gibt also entweder UIViewController oder passDataDelegate, denn wenn eine Klasse einem Protokoll entspricht, kann das Objekt seiner Klasse ein Protokoll als Typ haben.

Daher vergeben sender.delegate = receiver

Jetzt können wir CEO (Sender) kann Daten an Secretary übergeben (Empfänger) durch seine Delegierten Eigenschaft als

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

Output: CEO passed Confidential data 

nun der Sekretär (Empfänger), dass die Daten verwenden können, um ihre weitere Aufgabe zu erledigen.

Verwandte Themen