2011-12-10 133 views
2

这里是我的代码:CLLocationManager不会停止更新

- (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上。任何解释?

回答

0

我相信系统指示对已使用的核心定位在最后一个小时左右的任何应用程序的位置徽章。

+0

真的吗?为什么会这样做?有关于此的更多信息或资源? –

+0

@Eric为了让用户知道哪些应用程序查询它们的位置。如果图标仅启动一秒,用户就没有时间来确认它。 – 2011-12-10 17:34:03

+0

状态栏上的徽章会在几秒钟内消失时,位置服务已不再有效(系统级)。旁边设置 - >与隐私>定位服务您的应用程序紫色箭头将一对夫妇停止使用位置服务(只是测试它),你的应用程序的几分钟内变成灰色,并保持为灰色最后一次使用后24小时。 –

0

紫色箭头应尽快打电话消失:

[self.locManager stopUpdatingLocation]; 

虽然分配好自己的locManager,你不必叫self.locManager。这将保留计数一下子提高到2,而是使用:

locManager = [[CLLocationManager alloc] init]; 

而且,把一个断点在您的viewWillDisappear:方法,并确保它不被调用。另外,在最后将委托设置为零。 遵循这些要点后,你的代码就可以工作了。 紫色箭头用于定位服务并消耗大量电池。请尽快打电话stopUpdatingLocation确保箭头消失: