2009-11-19 73 views
1

一直在研究如何將數據從一個子視圖發送到另一個子視圖。該應用程序有幾個視圖,其中一個是實時設置視圖。設置中的更改應該影響其他視圖內的內容。在兩個iPhone子視圖之間交換數據

NSUserDefaults似乎很受歡迎,但我不希望持久性數據或自動保存到數據庫/文件。看起來像潛在的放緩,我想避免。

第二流行的事情是將一些常見頂級對象的引用傳遞給每個子視圖。只是還沒有找到任何教程,這將詳細告訴我如何做到這一點...最有可能這麼簡單,沒有教程是需要的 - 在你想出來一次!如果你能指點我正確的方向(URL),請多多諒解!

問題:我正在考慮使用一個「單一對象」來存儲「全局數據」,隨時隨地訪問它。這有什麼問題?如果我在例如appDelegate.m應該在任何人試圖訪問它之前存在,對吧?

我正在查看this的示例代碼。

回答

1

我會推薦使用代表和/或通知。

不是在應用程序委託中創建新的單例,而是在應用程序委託中添加必要的數據(或更好地引用數據),並讓視圖具有對應用程序委託的引用。

您還可以設置notifications,以便您的視圖可以跟蹤它們顯示的數據更改。

+0

通知更改數據看起來很有用,thanx!將在某些時候使用這些,從其他環境中熟悉。 代表另一方面...似乎是iPhone中的推薦模式,但還沒有找到任何好的教程(帶有示例代碼)。我仍然需要在自己的類中打包數據和/或添加到appDelegate中。 Singleton對象似乎提供了相同的結果,代碼少,錯誤發生的可能性也小。 – JOM 2009-11-19 12:51:27

+0

我真的沒有看到代碼方面的巨大差異或錯誤的可能性。我認爲幾乎所有的教程或示例代碼都使用委託(只需查看應用程序委託和/或視圖控制器的@interface聲明後面的協議列表)。 – gerry3 2009-11-19 16:22:31

0

單身人士的美妙之處在於,它是在您首次通過[singletonClass sharedInstance]訪問它時自動創建的。所以你不需要在啓動時「創建」它。如果它是需要從任何視圖訪問的全局數據,單身人士可能是這樣做的正確方法。

+0

你或其他人知道另一種方式來做到這一點嗎?我的意思是,這個單身人士是非常棒的,但是這是解決這種情況的唯一方法嗎? – 2009-11-19 11:26:19

+0

這是什麼rad?如果你需要在應用程序的持續時間內將單例存儲在內存中一次?你可以在應用程序關閉時釋放它。 – FelixLam 2009-11-19 11:33:42