【发布时间】:2011-11-07 06:24:25
【问题描述】:
如果我启动额外的跟踪用户位置的 CLLocaitonManager 实例,它会增加负载吗?还是应该在类之间使用一个 CLLocaitonManager 实例?
【问题讨论】:
-
你能详细说明你的问题吗?
标签: iphone objective-c ios geolocation cllocationmanager
如果我启动额外的跟踪用户位置的 CLLocaitonManager 实例,它会增加负载吗?还是应该在类之间使用一个 CLLocaitonManager 实例?
【问题讨论】:
标签: iphone objective-c ios geolocation cllocationmanager
创建过多的CLLocationManager 或增加核心位置服务的更新间隔会严重消耗电池电量。因此不建议创建太多实例。看不出有这个需求。
一个好的做法是在视图控制器中初始化一个CLLocationManager。如果移动到另一个 viewController,则在当前的 CLLocationManager 上停止更新并在新的 viewController 中创建一个新的管理器。这是一种模式。
另一种模式是在应用程序委托中创建CLLocationManager 并使其在整个应用程序中可用。这就像一个全局变量。但通常避免全局声明此变量,因为它会不断消耗您的电池寿命。
所以基本上,如果您的所有类都只是一个 viewController 的一部分,那么只创建一个 CLLocationManager 并共享位置更新。如果没有,则为每个 viewController 创建一个。
【讨论】:
定位服务要求给定设备上存在特定硬件。所以这就是为什么,创建多少个 CLLocationManager 实例并不重要。通常避免全局声明此变量,因为它会持续消耗您的电池寿命。每次需要查找用户位置时,另一个明智的做法是停止和启动。
【讨论】: