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.
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 –
Zobacz także http://stackoverflow.com/questions/1349706/little-confused-on-delegates-inobjective-c –