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
ViewB
utwórz protokół jako@protocol ViewBDelegate -(void) exampleDelegateMethod; @end
Zadeklaruj delegata w klasie nadawcy
@interface ViewB : UIView @property (nonatomic, weak) id< ViewBDelegate > delegate; @end
Zaakceptuj 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
ViewB
aby wywołać metodę delegowaną jako-(void) callDelegateMethod { [delegate exampleDelegateMethod]; //assuming the delegate is assigned otherwise error }