2010-07-24 13 views
5

Jestem nowy iPhone programiściedlaczego i gdzie używać delegata w Objective C

Stworzyłem kilka małych poglądów bez delegatów .... Jeśli program można uruchomić bez delegata, to dlaczego z nich korzystać . Co jest dla nich potrzebne, widziałem niektóre programy w sieci posiadające delegatów.

Jestem zdezorientowany, proszę odpowiedzieć.

+0

Potencjalnie związane z http://stackoverflow.com/questions/3183146/what-do-mean-by-delegate-in-iphone-application i http://stackoverflow.com/questions/645449/how-to- use-custom-delegates-in-objective-c –

+0

Zobacz także http://stackoverflow.com/questions/1349706/little-confused-on-delegates-inobjective-c –

Odpowiedz

10

Delegaci to wzór, który umożliwia niektórym obiektom powiadomienie innego obiektu, gdy coś się wydarzy. Wiele metod delegatów zaczyna się od "woli" lub "nie", które są wywoływane odpowiednio przed i po zdarzeniu.

Załóżmy, że masz UITableView i chcesz wiedzieć, kiedy użytkownik dotknie komórki, aby móc przetworzyć swój wybór. Przypisujesz delegata do widoku tabeli, który implementuje metodę delegata tableView:didSelectRowAtIndexPath:.

Przyjemność w tym podejściu polega na tym, że widok tabeli nie musi wiedzieć ani nie obchodzi, co to jest ten inny obiekt uczestnika i jak działa. Pozwala obiektowi generującemu zdarzenia zachować skupienie i czystość, tylko radząc sobie z własnym stanem. Kiedy robi coś godnego uwagi, wyśle ​​wiadomość do delegata. Obiekt delegata nie musi w ogóle nic wiedzieć o stanie wewnętrznym innego obiektu. Musi tylko wiedzieć, że zrobił coś ważnego.

A to pasuje do podejścia Model/Widok/Kontroler (MVC) w przypadku zestawu SDK do iPhone'a. Widok powinien być zatroskany tylko o to, jak się wyświetla, a kontroler jest delegatem widoku, kiedy rzeczy się zmieniają.

Programowanie z uczestnikami nie jest wymaganą funkcją językową Objective-C. To tylko wzór, który SDK używa całkiem sporo. Ale jest to dość dobry wzór, który może pomóc w utrzymaniu kodu w czystości.

+0

dziękuję bardzo mch – Saawan