2011-03-31 218 views
3

我在写一个使用GPS数据的iPhone应用程序。我的问题是,GPS永远不会停止更新位置(箭头停留在状态栏上),即使我杀死了实际进程。使其消失的唯一方法是卸载应用程序,或禁止它在系统设置中使用位置。GPS不会停止更新

这是我如何创建外景经理:

// Create the location manager if this object does not 
    // already have one. 
    if (nil == locationManager) 
     locationManager = [[CLLocationManager alloc] init]; 

    locationManager.delegate = regionTracker; 

    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 

    // Set a movement threshold for new events. 
    locationManager.distanceFilter = 1; 

    [locationManager startUpdatingLocation]; 

在我的应用程序的委托,我都在applicationWillTerminate运行这两行:和applicationDidEnterBackground:

[self.viewController.locationManager stopUpdatingLocation]; 
    [self.viewController.locationManager setDelegate:nil]; 

我nil代表,因为我看到他们这样做的一些例子,但是真的需要它吗?

+0

locationManager属性是否在这些应用程序委托方法中提供了非零值? – Till 2011-03-31 12:13:38

+0

是的。我只是测试了发射断点,如果它是零,没有骰子。感谢更多的帮助! – Accatyyc 2011-03-31 12:17:55

回答

7

同milonet提到的,在我的情况,我需要调用stopMonitoringSignificantLocationChanges除了stopUpdatingLocation。

+0

This为我解决同样的问题。不要忘记Upvote @ milonet的回答,如果仅仅是因为他的评论低于他的回答是解决方案的第一个建议。 – 2013-09-04 21:17:57

2

我怀疑一些有趣的事情发生的事情与你的CLLocationManager对象的保留/释放周期。

在委托中,您将它视为属性。在viewController中,你将它视为一个iVar。

我宁愿将其分配给self.locationManager而非locationManager。假设这是一个名为属性与retain二传手语义,然后你release在你的viewController的-dealloc方法(可能调用stopUpdatingLocation上之后),你应该是好去。

我看到我自己,虽然我第一次与CoreLocation打4.0后立即解决此相同的行为和backgrounding走了过来。我认为我的电池有问题,因为我刚刚拿到了iPhone 4.结果我只是搅动了CoreLocation,无论我的应用程序是否在运行。

+0

+1用于推荐点通知设置器。 – Till 2011-03-31 12:21:44

+0

你正在提出一个好点,我应该从一开始就这样做。不幸的是,它并没有解决我的问题。 GPS仍然保持亮着。我甚至尝试释放并将locationManager设置为零,并且它仍然保持打开状态。 此外,当您需要释放位置管理器时,stopUpdatingLocation实际上会做什么? (这也不适用于我,但仍然) 感谢您的回答。 – Accatyyc 2011-03-31 12:33:13

1

我找到了原因。在项目的早期阶段,我使用了iOS 4的区域功能,该功能注册了与应用程序标识符关联的系统的全局区域。

解决方法 - 制作一个新项目。

+0

感谢您的更新 – Roger 2011-04-04 13:19:46

1

我有同样的问题,位置经理总是保持不变! 我试图dealloc所有,但gps留在..关闭gps唯一的解决方案是删除应用程序!

+0

您是否正在使用iOS 4+的地区功能? – Accatyyc 2012-02-21 11:24:52

+0

是的,我正在使用xcode 4.2惠普ios 5.0与ARC – milonet 2012-02-21 11:37:53

+0

哦,我很抱歉,我误解您的评论。我没有使用ios 4的区域功能。+ – milonet 2012-02-21 13:06:10

1

类似的事情发生在我身上。我正在使用地图查看与用户位置激活。我像往常一样释放位置管理器,GPS仍然处于活动状态。我禁用了这个选项,当它应该时,GPS停止。