我對OO相當陌生。如果我有兩個需要交換數據的A和B類,或者調用對方的方法,我需要能夠從類A訪問類B的實例。我是否應該將實例對象的地址保存在全局變量中?我應該指定一個(單例)主類,並且使(指向)主類的A和B屬性的實例? (AppDelegate浮現在腦海。)如何從另一個班級訪問班級?
是否有一個直接的書面方式來實現呢?不知何故,我在這裏錯過了一些「最佳做法」。我查看了Apple的例子,但沒有找到答案。
編輯:由於我相當新的MVC設計模式,我的問題基本上是「誰創造誰」?
我們在這裏討論一個音頻播放器。 1.當用戶選擇一首歌曲時,UI會通過創建一個viewController來顯示其波形,該viewController會創建相應的視圖。 2.當用戶點擊播放時,用戶界面通過在波形上覆蓋新視圖來播放歌曲時顯示時間線。現在,後一種視圖需要來自波形顯示viewController的一些信息。現在,我在appDelegate的實例變量中存儲一個指向viewController的指針。這工作,但感覺非常奇怪。
我是否應該將兩個課程所需的信息外包給每個班級都可以輕鬆訪問的第三個實體?
哇,謝謝澄清。要回到我手邊的問題,你的意思是,我的模型和我的觀點不應該首先與對方交談?一切都應該通過控制器發送。 – 2011-04-07 12:29:36
@JoeVölker:對。使用標準視圖時,控制器應將數據對象從模型傳遞到視圖並返回。當使用自定義視圖時,我通常會給我的自定義視圖顯示和編輯模型對象的屬性。不同之處在於標準視圖被設計爲通用的,可以在任何應用程序中處理幾乎任何模型,而我將爲特定模型設計自定義視圖。該模型從不與觀點對話,應儘可能少地儘可能與控制器交談。 – 2011-04-08 19:58:36