【问题标题】:Many CLLocationManager instance许多 CLLocationManager 实例
【发布时间】:2011-11-07 06:24:25
【问题描述】:

如果我启动额外的跟踪用户位置的 CLLocaitonManager 实例,它会增加负载吗?还是应该在类之间使用一个 CLLocaitonManager 实例?

【问题讨论】:

标签: iphone objective-c ios geolocation cllocationmanager


【解决方案1】:

创建过多的CLLocationManager 或增加核心位置服务的更新间隔会严重消耗电池电量。因此不建议创建太多实例。看不出有这个需求。

一个好的做法是在视图控制器中初始化一个CLLocationManager。如果移动到另一个 viewController,则在当前的 CLLocationManager 上停止更新并在新的 viewController 中创建一个新的管理器。这是一种模式。

另一种模式是在应用程序委托中创建CLLocationManager 并使其在整个应用程序中可用。这就像一个全局变量。但通常避免全局声明此变量,因为它会不断消耗您的电池寿命。

所以基本上,如果您的所有类都只是一个 viewController 的一部分,那么只创建一个 CLLocationManager 并共享位置更新。如果没有,则为每个 viewController 创建一个。

【讨论】:

  • 你有这方面的证据吗?我一直使用 CLLocationManager 制作单例,但当我这样做时,我总是对 Apple 设计 API 的方式感到震惊,假设您将拥有多个 CLLocation 管理器。 (例如,didUpdateToLocation 指定了一个 CLLocationManager)
【解决方案2】:

定位服务要求给定设备上存在特定硬件。所以这就是为什么,创建多少个 CLLocationManager 实例并不重要。通常避免全局声明此变量,因为它会持续消耗您的电池寿命。每次需要查找用户位置时,另一个明智的做法是停止和启动。

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多