2012-06-19 23 views
5

Nauczyłem się o delegaturach i źródłach danych na potrzeby programowania w systemie iOS i muszę zadać pytanie, czy są jakieś różnice, które należy zrobić, gdy tworzy się protokół źródła danych niż protokół delegata?Delegowanie i źródło danych iOS

Również w jaki sposób mogę zaimplementować delegata dla wielu obiektów w jednym uczestniku? Przykład jednego obiektu z wieloma unikalnymi alertami niestandardowymi.

--Edit--

Przykładem drugiej części:

Jeden obiekt, który ma cztery różne alarmy, każdy z różnych przycisków. Ponieważ obiekt musi dyktować działanie każdego przycisku, będąc delegatem dla alertów. W jaki sposób ustawić metody delegatów w celu określenia każdego alertu?

Odpowiedz

14

Oba typy obiektów zachowują się mniej więcej tak samo, jest kwestią tego, co robią, to jest pytanie.

Obiekt typu delegata odpowiada na działania podejmowane przez inny obiekt. Na przykład protokół UITableViewDelegate ma takie metody, jak didSelectRowAtIndexPath do wykonywania działań na użytkownika wybierającego określony wiersz w tabeli.

Podczas gdy obiekt typu źródło danych przekazuje dane do innego obiektu. Na przykład ponownie, protokół UITableViewDataSource ma metody, takie jak cellForRowAtIndexPath i numberOfRowsInSection dyktowanie, co powinno być wyświetlane w tabeli.

Nie ma dużej różnicy między tymi dwoma pod względem kompilacji, jest to po prostu styl kodowania, który sprawia, że ​​obiekty robią to, co bardzo jasne dla użytkownika kodu.

EDIT:

Aby odpowiedzieć na drugie pytanie: jeśli chcesz, aby każdy alert różnie reagować, trzeba będzie napisać innego delegata dla każdego wpisu. Jeśli na przykład jeden z Twoich alertów jest ostrzeżeniem o potwierdzeniu zapisania (być może zamierzasz zastąpić plik i pojawi się on, aby potwierdzić, co chciałby zrobić użytkownik), musisz mieć obiekt taki jak:

@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate> 
@end 

I w @implementation dla SaveConfirmAlertDelegate można zaimplementować odpowiednią funkcję zapisu w zależności od tego, który przycisk użytkownik włączył alarm.

Po utworzeniu widoku alertu określa się, jaki powinien być obiekt delegowany, nie musi to być self. Można ustawić czterech uczestników jako różne obiekty i ustawić je w razie potrzeby.

Mam nadzieję, że to wszystko wyjaśni

+0

Dziękuję za wyjaśnienie mojego pierwszego numeru. Dodałem przykład do mojego pytania. – RMDan

+0

@RMDan Dodałem dodatkowe wyjaśnienie dla twojego drugiego pytania, mam nadzieję, że czyści sprawy trochę –

+0

To ma sens. Będę musiał dowiedzieć się więcej na temat delegacji, ale zaczyna to mieć sens. – RMDan