Objective-C Language
Protokoły i delegaci
Szukaj…
Uwagi
Protokoły i delegaci to dwie powiązane, ale różne koncepcje:
Protokół jest interfejsem, z którym klasa może się zgadzać, co oznacza, że klasa implementuje wymienione metody.
Delegat to zazwyczaj obiekt anonimowy zgodny z protokołem.
Aplikacja Delegata o nazwie Delegacja jest wzorcem projektowym.
Z jednej strony mamy koncepcję Dziedziczenia, która tworzy ścisłe powiązanie między podklasą i jej nadklasą, podczas gdy wzorzec projektowy Delegacji stanowi alternatywę pozwalającą uniknąć tego ścisłego powiązania, dzięki której możemy stworzyć znacznie luźniejszą relację w oparciu o anonimowe obiekty Delegata .
Wdrożenie protokołów i mechanizmu delegacji.
Załóżmy, że masz dwa widoki ViewA i ViewB
Instancja ViewB jest tworzona wewnątrz ViewA , więc ViewA może wysłać wiadomość do instancji ViewB's , ale aby stało się odwrotnie, musimy zaimplementować delegację (aby użycie delegacji instancji ViewB's mogło wysłać wiadomość do ViewA )
Wykonaj poniższe kroki, aby wdrożyć przekazanie uprawnień
W
ViewButwórz protokół jako@protocol ViewBDelegate -(void) exampleDelegateMethod; @endZadeklaruj delegata w klasie nadawcy
@interface ViewB : UIView @property (nonatomic, weak) id< ViewBDelegate > delegate; @endZaakceptuj protokół w widoku klasy A.
@interfac ViewA: UIView < ViewBDelegate >Ustaw delegata
-(void) anyFunction { // create Class ViewB's instance and set the delegate [viewB setDelegate:self]; }Zaimplementuj metodę delegowania w klasie
ViewA-(void) exampleDelegateMethod { // will be called by Class ViewB's instance }Użyj metody z klasy
ViewBaby wywołać metodę delegowaną jako-(void) callDelegateMethod { [delegate exampleDelegateMethod]; //assuming the delegate is assigned otherwise error }