2008-11-21 15 views
13

Jestem nowy w rozwoju na iPhone. Prawie każdy przykładowy projekt (jak również domyślne szablony projektu) mają jednego lub więcej delegatów i kontrolerów. Czy ktoś może mi dać podział tego, za co delegaci są odpowiedzialni, a co powinni zrobić kontrolerzy?Obowiązki Delegatów i Kontrolerów w Cocoa Touch?

Odpowiedz

11

Najprostszy sposób można myślę, aby odróżnić dwa są:

  • Delegat jest protokołem (interfejs), który definiuje metody, że obiekt implementuje w celu uzyskania szczegółowych wiadomości z innych przedmiotów. Obiekty delegatów są najczęściej używane do odbierania asynchronicznych wywołań zwrotnych, takich jak dane wejściowe użytkownika, operacje we/wy.
  • Kontroler jest obiektem, który zwykle zawiera elementy interfejsu użytkownika (widoki, kierownica, itp) oraz dane, a zarówno odbiera i wysyłać wiadomości do różnych obiektów w jego obrębie. W wielu przypadkach kontroler może być delegatem i może implementować kilka delegowanych protokołów do odbierania zdarzeń z wielu obiektów.

Należy pamiętać, że wiele elementów interfejsu użytkownika i elementów sterujących pozwala przekazywać zdarzenia z powrotem do kontrolera, łącząc je z metodą IBAction w programie Interface Builder. Jest to bardzo przydatne, ponieważ nie wymaga dodatkowego kodu do wdrażania delegatów. Jednak niektóre inne interfejsy API, takie jak ABPeoplePickerNavigationController lub NSURLConnection, nie mają wizualizacji w programie Interface Builder i dlatego muszą używać delegatów do obsługi ich zdarzeń.

4

Delegat jest jakiś obiekt, który implementuje zestaw metod, które albo aplikacja lub ramy połączyć przeciwko zależy do funkcjonowania. Jest to środek wdrażania modelu opartego na delegacji, w którym odpowiedzialność za wykonanie działania jest przenoszona z jakiegoś źródła root na zainteresowaną stronę trzecią. Na przykład, UIApplication ma delegowanie metod, które zapewniają stronie trzeciej możliwość wykonywania operacji w określonych momentach podczas okresu życia aplikacji. Może to być kamień milowy na osi czasu, w którym możesz przyczynić się do powstania tej historii.

Kontroler jest zupełnie inna zwierząt i jest odpowiedzialny za to, dobrze, controlling. ViewController jest ładowany z widokami zarządzania - do ładowania ich do pamięci z dysku, gdy są potrzebne i rozładowywania ich, gdy nie są. Przekształcają one treść z pewnego bazowego obiektu modelu w postać, która może być używana przez obiekty widoku, ładuje zawartość do modelu w pamięci z dysku lub z Internetu i zrzuca zawartość z powrotem na dysk podczas zapisywania i/lub zamykania.

Powiązane problemy