我一直在使用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时,我的委托方法不会被调用。任何人都可以指出我的错误吗?
答案 0 :(得分:0)
问题很可能不在您提供的其他代码中。您可以将locationController
初始化两次,这样就会泄漏因未收到CLLocationManager
消息而不断更新的stopUpdatingLocation
。您应该使用调试器来解决这个问题。此外,将日志消息放在代码的关键点非常有用。
要避免此类双重初始化,请确保仅在init
方法中进行此类值分配。