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
Dziękuję za wyjaśnienie mojego pierwszego numeru. Dodałem przykład do mojego pytania. – RMDan
@RMDan Dodałem dodatkowe wyjaśnienie dla twojego drugiego pytania, mam nadzieję, że czyści sprawy trochę –
To ma sens. Będę musiał dowiedzieć się więcej na temat delegacji, ale zaczyna to mieć sens. – RMDan