Swift: Delegat

Apr 03 2023
uczenie się o delegacie czasami może być trudne. Wiem to, bo tam byłem! Oto kilka notatek, które zrobiłem, gdy dowiedziałem się o delegacie, mam nadzieję, że może to również pomóc tym, którzy zmagają się z tym tematem.

uczenie się o delegacie czasami może być trudne. Wiem to, bo tam byłem! Oto kilka notatek, które zrobiłem, gdy dowiedziałem się o delegacie, mam nadzieję, że może to również pomóc tym, którzy zmagają się z tym tematem.

Czym więc jest delegat i jak działa?

Okej, zanim przejdziemy do delegowania, najpierw musimy zrozumieć, czym jest wzorzec delegowania.

Delegacja to wzorzec projektowy, który umożliwia nam przekazanie/delegowanie niektórych obowiązków „klasy” instancji innej klasy.

Teraz spróbujmy wyobrazić sobie delegację w prawdziwym świecie, wyobraź sobie, że jesteś szefem kuchni w pizzerii i pewnego dnia masz to duże wydarzenie, podczas którego musisz zrobić 100 pizz w bardzo krótkim czasie i dlatego chcesz delegować /przekaż część swojej pracy innym szefom kuchni. Powiedzmy, że delegujesz/przekazujesz mi „robienie ciasta na pizzę”, więc po tym, jak skończę robić ciasto na pizzę, daję ci ciasto na pizzę, abyś mógł zrobić pizzę.

Zauważysz tam wzór? Delegowanie w realnym świecie oznacza przekazywanie/delegowanie zadań innym osobom. W programowaniu Swift jest również to samo, jedna klasa może delegować część swoich zadań innej klasie.

Można to zobaczyć, gdy używamy TableView w ViewController, gdzie zwykle dostosowujemy kontroler widoku do protokołu UITableViewDelegate.

ViewController zgodny z UITableViewDelegate

Teraz wiesz, czym jest Delegat w Swift.
Innym pytaniem, które często pojawiało się wokół tematu delegowania, jest użycie self.
Weź przykład tego kodu tutaj

Tutaj przypisujemy delegata TableView do bieżącego kontrolera widoku. Dlaczego więc musimy to robić i co to ma robić? Teraz, gdy dołączyliśmy ViewController do protokołu UITableViewDelegate, możemy uzyskać dostęp do delegata. A kiedy deklarujemy delegata samemu, czyli kontrolerowi widoku, mówimy, że teraz kontroler widoku przejmie wszystkie obowiązki UITableViewDelegate.

I to już koniec tego artykułu! Dziękuję za przeczytanie i życzę miłego dnia :)