【问题标题】:CLLocationManager won't stop updatingCLLocationManager 不会停止更新
【发布时间】:2011-12-10 12:01:36
【问题描述】:

这是我的代码:

- (void) viewWillAppear:(BOOL)animated
{    
    // SETUP THE LOCATION MANAGER. 
    self.locManager = [[CLLocationManager alloc] init];
    self.locManager.delegate = self;
    [self.locManager startUpdatingLocation];
}


- (void) viewWillDisappear:(BOOL)animated
{
   [self.locManager stopUpdatingLocation];
    [self.locManager.delegate release];
}

当视图控制器退出时,右上角的 CLLocationManager 箭头标志仍然显示。这在 iOS 4.3 和 5.0 上都有。有什么解释吗?

【问题讨论】:

    标签: iphone objective-c xcode cocoa-touch cllocationmanager


    【解决方案1】:

    我相信系统会在最近一小时左右使用过 Core Location 的任何应用上显示位置标记。

    【讨论】:

    • 真的吗?为什么会这样做?还有更多相关信息或资源吗?
    • @Eric 让用户知道哪个应用查询了他们的位置。如果图标只出现一秒钟,用户就没有时间确认它。
    • 位置服务不再处于活动状态时(系统范围内),状态栏上的标记将在几秒钟内消失。设置->隐私->定位服务中您的应用旁边的紫色箭头将在您的应用停止使用定位服务后的几分钟内变为灰色(刚刚测试过),并在上次使用后 24 小时内保持灰色。
    【解决方案2】:

    一调用紫色箭头就会消失:

    [self.locManager stopUpdatingLocation];
    

    在分配你的 locManager 时,你不需要调用 self.locManager。这会将保留计数增加到 2。而是使用:

    locManager = [[CLLocationManager alloc] init];
    

    另外,在 viewWillDisappear: 方法中放置一个断点并确保它确实被调用。此外,最后将委托设置为 nil。 遵循这些要点后,您的代码将起作用。 紫色箭头用于定位服务,会大量消耗电池。确保在您调用 stopUpdatingLocation 后箭头消失:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 2012-12-18
      • 1970-01-01
      • 2018-05-07
      相关资源
      最近更新 更多