2011-11-07 61 views
3

如果我初始化追加用戶位置的CLLocaitonManager實例,它會增加負載嗎?或者我應該在類之間使用一個CLLocaitonManager實例?許多CLLocationManager實例

+0

你能不能提出你的問題? –

+0

另請參閱:http://stackoverflow.com/questions/3614511/is-there-any-performance-penalty-for-using-multiple-cllocationmanager-instances/3614556#3614556 – Isaac

回答

6

創建太多CLLocaitonManager或增加核心位置服務的更新間隔會嚴重損耗電池。因此不建議創建太多實例。不要看到這個需要。

一個好的做法是在viewController中初始化一個CLLocaitonManager。如果移動到另一個viewController,則在當前的更新stopUpdates在新的viewController中創建一個新的管理器。這是一種模式。

另一種模式是在應用程序代理&中創建一個CLLocaitonManager,使其可在整個應用程序中使用。這就像一個全局變量。但通常避免全局聲明這個變量,因爲它不斷消耗你的電池壽命。

所以基本上如果你所有的類只是一個viewController的一部分,那麼只創建一個共享位置更新的CLLocaitonManager &。如果沒有,則爲每個viewController創建一個。

+3

你有這方面的證據嗎?我總是用CLLocationManager創建一個單例,但正如我所做的那樣,我總是爲蘋果設計API的方式感到震驚,假設你將擁有多個CLLocation管理器。 (例如,doUpdateToLocation指定了CLLocationManager) –

0

位置服務要求給定設備上存在特定的硬件。所以多數民衆贊成爲什麼,它的多少CLLocationManager實例創建無關緊要。通常避免全局聲明這個變量,因爲它不斷消耗你的電池壽命。每當需要查找用戶位置時,另一個明智的停止和開始。