我想了解如何更好地實現模型 - 視圖 - 控制器設計模式。Cocoa/iOS/iPhone中的模型對象所有權和MVC
什麼對象應該擁有Model對象?單個Controller是否應該實例化(擁有)Model對象?
下面是一個例子情形:
我有含有兩個UIViewControllers(controllerA和controllerB)一個的UITabBarController。很明顯,這些控制器都不相互擁有。我有一個Model對象,它包含一些數據並執行一些網絡活動。 controllerA和controllerB都需要能夠對Model對象進行更改。 controllerB需要知道何時對Model對象進行更改(由controllerA或網絡活動返回的結果)。從最近的閱讀:
- 我需要模型對象和controllerB之間的KVO?
- 模型對象應該是單身嗎?這樣兩個控制器都可以修改它?
- 在更簡單的應用程序中,我有viewController擁有Model對象。有沒有辦法讓一個控制器實例化Model對象,但其他控制器是否有寫入權限?
- 我也讀過關於使用應用程序委託來擁有Model對象,並允許控制器通過應用程序委託共享實例進行訪問。這看起來很醜陋 - 使用應用程序委託單例來全局訪問我的Model對象。將我的Model對象設置爲singleton不是更好嗎?
- 我看到有人給了this鏈接到iPhoneDevSDK,但他的方法的原因逃脫了我。同樣,這不是讓應用程序委託涉及的東西應該是單身?
主要是,有沒有其他方式讓兩個控制器訪問(寫入)一個模型,而不是通過模型作爲單例?另外,當一個Controller擁有另一個Controller(例如,在一個UINavigationController中,當根視圖控制器實例化另一個視圖控制器時,它將自己堆疊在另一個視圖控制器上),共享該模型的最佳方法是讓根視圖控制器實例化模型,然後將其傳遞到下一個視圖控制器,然後再將其推送到導航堆棧上)?
感謝lorean,很好的回答!非常感激。 – MattyG