Próbuję zrozumieć, jak lepiej zaimplementować wzorzec projektowy Model-widok-kontroler.Własność obiektu modelu i MVC w kakao/iOS/iPhone
Jaki obiekt powinien "posiadać" obiekt Modelu? Czy pojedynczy kontroler powinien utworzyć egzemplarz obiektu (własny)?
Oto przykład scenariusza:
mam UITabBarController zawierający dwa UIViewControllers (controllerA i controllerB). Oczywiście żaden z tych kontrolerów nie posiada siebie. Mam obiekt Model, który zawiera niektóre dane, a także wykonuje pewną aktywność sieciową. Zarówno kontroler A jak i kontroler B muszą mieć możliwość wprowadzania zmian w obiekcie Modelu. kontroler B musi wiedzieć, kiedy zmiany zostały wprowadzone do obiektu Modelu (przez kontroler A lub zwrócone wyniki z działania sieci). Z ostatniego czytania:
- Potrzebuję KVO między obiektem modelu a kontrolerem B?
- Czy obiekt modelu powinien być singletonem? Aby oba kontrolery mogły go zmodyfikować?
- W prostszych aplikacjach, miałem viewController właścicielem obiektu Model. Czy istnieje jeden sposób, aby jeden kontroler stworzył obiekt Modelu, ale aby inne kontrolery miały do niego dostęp do zapisu?
- Przeczytałem również o użyciu delegata aplikacji do posiadania obiektu Model i umożliwienia kontrolerom dostępu za pośrednictwem instancji delegata aplikacji. To wydaje się trochę brzydkie - używając aplikacji delegat singleton do globalnego dostępu do mojego obiektu Model. Czy nie byłoby lepiej, aby mój obiekt modelu był singletonem?
- Widziałem, że ktoś na SO daje this link do iPhoneDevSDK, ale przyczyny jego metody uciekają mi. Ponownie, czy to nie oznacza, że delegat aplikacji jest zaangażowany w coś, co powinno być pojedynczym singlem?
Głównie, czy jest jakiś inny sposób na dostęp dwóch kontrolerów do jednego Modelu, poza tym, że Model jest singletonem?
Ponadto, gdy kontroler jest właścicielem innego kontrolera (np. W kontrolce UINavigationController, gdy kontroler widoku głównego tworzy inny kontroler widoku, aby ułożyć się na sobie), najlepszą metodą na udostępnienie Modelu byłaby kontroler widoku głównego do utworzenia instancji Model i przekazać go do następnego kontrolera widoku przed wciśnięciem go na stos nav)?
Dzięki lorean, wspaniała odpowiedź! Bardzo doceniane. – MattyG