2

我一直在使用位置类作为委托类并使用我的 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 时,我的委托方法没有被调用。谁能指出我哪里出错了?

4

1 回答 1

0

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

为避免此类双重初始化,请确保此类值分配仅在init方法中发生。

于 2013-08-12T11:54:48.330 回答