2011-11-07 44 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实例创建无关紧要。通常避免全局声明这个变量,因为它不断消耗你的电池寿命。每当需要查找用户位置时,另一个明智的停止和开始。