Zazwyczaj po prostu ułożyłem aplikację w dowolny losowy sposób, o ile działa, ale oznacza to, że nie zwracam uwagi na jakiekolwiek wzorce projektowe. Moja aplikacja obecnie intensywnie wykorzystuje zmienne globalne (posiadam instancję mojego AppDelegate
w każdym kontrolerze widoku, aby uzyskać dostęp do właściwości, które zadeklarowałem w moim AppDelegate.h
). Mimo że robi to, co chcę, to czytałem, że nie jest to dobra praktyka projektowa.Zrozumienie wzorca projektowego MVC w Cocoa Touch
Więc chcę zacząć tworzyć mój kod "legit". Jednak nie mogę sobie teraz wyobrazić mojej aplikacji bez zmiennych globalnych. Są tak ważne dla dobrego samopoczucia aplikacji, ale to musi oznaczać, że robię coś złego, prawda? Po prostu nie mogę sobie wyobrazić, jak inaczej bym robił. Weźmy na przykład ten:
Masz dwa kontrolery widoku tu, SideViewController
i MainViewController
. Za pomocą zmiennych globalnych, takich jak na przykład, czy cała aplikacja ma jedną wspólną instancję z SideViewController
i MainViewController
(appDelegate.sideViewController
i appDelegate.mainViewController
), mogę łatwo komunikować się między dwoma kontrolerami widoku, więc jeśli naciśnie "Wiadomość RSS" w moim SideViewController
, mogę powiedz mój MainViewController
, aby ponownie załadować widok.
Nie mogę sobie jednak wyobrazić, jak by to się stało, gdyby nie były to zmienne globalne? Jeśli zdarzenie wystąpi w moim SideViewController
, w jaki sposób powiadomię mój MainViewController
, w sposób zgodny ze standardami projektowymi?
Czy używasz kontrolera nawigacyjnego? –
Używam kontrolera nawigacyjnego do głównej zawartości mojej aplikacji, jednak obecna implementacja mojego kontrolera SideViewController nie jest dodawana do stosu nawigacji, ale do głównego okna aplikacji przez '[appDelegate.window addSubView: sideViewController.view] – Snowman