在locationManager = nil和stopUpdatingLocation调用后,位置仍在监视

时间:2013-05-06 15:11:56

标签: iphone ios objective-c cllocationmanager

我正在尝试很多东西来停止我的应用程序的位置更新,但似乎没有任何工作......

我的所作所为(关于帖子:StopUpdatingLocation method not working for iOS5):

// Initialise my locationManager and start monitoring :
locationManager = [[CLLocationManager alloc] init];
[locationManager startUpdatingLocation];

// .. Some code to use the coordinates that locationManager gives me.

// To stop monitoring :
locationManager = nil;

你必须知道我在方法中放置了[locationManager stopUpdatingLocation];

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

所以位置只更新一次(顺便告诉我这是不是一个好主意......)。

我还尝试在[locationManager stopUpdatingLocation];之前将locationManager = nil;放在主代码中,但在这两种情况下,给我位置的蓝点仍然在我的地图上移动......

我还设置了一个在控制台中打印locationManager对象的计时器,它给了我(null)同时蓝点仍然在我的iPhone 5上移动所以我不明白... < / p>

或许点还在移动,因为另一件事,但不是因为locationManager更新?

我当然错过了一些东西,但我得不到什么:/。

感谢您的想法和帮助。

3 个答案:

答案 0 :(得分:4)

一种可能性:地图上移动的蓝点是因为您将MKMapView的showsUserLocation设置为YES。它将跟踪,直到您将其设置为NO。

另一种可能性:这一行错了:

locationManager = nil;

停止监控,但 导致您无法引用位置管理器,所以现在无法停止监控!切断那条线。

答案 1 :(得分:0)

即使我放置了代码

,我也遇到了同样的问题
[locationManager stopUpdatingLocation];
locationManager=nil;

我的应用程序使用GPS服务,这不一定消耗电池电量。此问题的解决方案是关闭MKMapView的showUserLocation属性。

[self.mapView setShowsUserLocation:NO];

由于即使GPS service为零,MKMapView仍继续使用LocationManager

希望它能帮到你

答案 2 :(得分:0)

使用以下代码行

[self.locationManager stopUpdatingLocation];
self.locationManager.delegate = nil;
self.locationManager = nil;

谢谢!