stopUpdatingLocation没有停止iOS中的位置更新?

时间:2013-08-12 11:06:44

标签: iphone ios ipad mkmapview cllocationmanager

我一直在使用location类作为委托类,并使用我的AppDelegate来更新位置。我需要两个案例的位置:首先是他第一次登录我的申请时,然后下一个案例是他来自背景。我在第一种情况下使用UILocation这样:

    locationController = [[UILocation alloc] init];
    locationController.delegate = self;
    locationController.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    locationController.locationManager.distanceFilter = kCLDistanceFilterNone;
    [locationController.locationManager startUpdatingLocation]; 

在第二种情况下简单地说:

[locationController.locationManager startUpdatingLocation]

在我的委托方法中:

- (void)locationUpdate:(CLLocation *)location

在我的委托课中,我这样做:

[locationController.locationManager stopUpdatingLocation]; 
拍摄经纬度之后。但是在调用它之后它仍然会更新。

我试过

    locationController.locationManager=nil;
    locationController.locationManager.delegate=nil

停止更新后。但在此之后,当我调用startUpdateLocation时,我的委托方法不会被调用。任何人都可以指出我的错误吗?

1 个答案:

答案 0 :(得分:0)

问题很可能不在您提供的其他代码中。您可以将locationController初始化两次,这样就会泄漏因未收到CLLocationManager消息而不断更新的stopUpdatingLocation。您应该使用调试器来解决这个问题。此外,将日志消息放在代码的关键点非常有用。

要避免此类双重初始化,请确保仅在init方法中进行此类值分配。