2011-02-16 56 views
0

我正在開發一個應用程序,它有幾個使用用戶當前位置的視圖控制器。由於用戶當前位置應該是相同的,無論我在哪個視圖中,我認爲在視圖控制器之間共享此位置是有意義的。我應該在應用程序委託中定義一個CLLocation,然後將每個視圖控制器usersCurrentLocation設置爲與此匹配?當位置由一個視圖控制器更新時,我如何確保其他視圖控制器中的每個視圖控制器都能獲取更改?對我來說,這聽起來像是一個全球變量的工作,但我知道他們不是一個非常'可可'的做事方式。什麼是正確的方法來做到這一點?代碼示例會很有幫助。如何在我的應用程序中共享CLLocation?

回答

1

單身人士是完美的Cocoa做事方式,在應用程序啓動時實例化的「位置管理器」單身人士(或任何您選擇調用它的人)不僅可以將信息提供給任何需要該信息的信息,而且還可以定期檢查位置更改並將通知發送給任何聽衆。

馬特加拉格爾a great job of explaining singletons on his blog,幷包括一個超級方便的宏來做繁重的工作。

0

不要將位置指定爲屬性,而應將CCLocationManager視爲屬性。同樣數量的工作並保持最新狀態......只要您需要當前位置,只需發送location消息即可。

0

這是一個哲學問題。如果它只是一個小數據,那麼是的,你的應用程序委託中的一個命名屬性是處理它的好方法。特別是如果它是應用程序的屬性(就像它在物理上運行的地方一樣)。我不介意。

更多的數據比,我更喜歡創建一個單獨的數據管理器類,所以可以得到在全球範圍內,但有自己的命名空間。

如果我是你,我會讓你所有的位置管理代碼都存在於應用程序委託本身中,並將個別viewcontrollers看作委託的位置管理器的「客戶端」,從委託的.currentLocation中獲取當前狀態(或其他)財產。

如果你能處理不時有些玄乎的準確性,您也可以考慮使用「上顯著變化更新」 CLLocationManager的模式,而不是活生生的GPS跟蹤。

相關問題