Я использую CLLocationManager в других представлениях моего приложения и при возврате из фонового состояния некоторое зависание на 2-3 секунды, не реагируя на взаимодействие с пользователем.
В моем AppDelegate я использую этот код:
_locationManager = [[CLLocationManager alloc] init];
// Get the location if the user
if ([CLLocationManager locationServicesEnabled])
{
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
[self.locationManager setDistanceFilter:50];
[self.locationManager startUpdatingLocation];
}
В другом виде я использую этот код:
_locationManager = [[CLLocationManager alloc] init];
if ([CLLocationManager locationServicesEnabled])
{
[self.locationManager setDelegate:self];
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
[self.locationManager setDistanceFilter:50];
[self.locationManager startUpdatingLocation];
}
// Delegate
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
// Set the map view to the current location
MKCoordinateSpan span;
span.latitudeDelta = 0.01;
span.longitudeDelta = 0.02;
MKCoordinateRegion region;
region.span = span;
region.center = newLocation.coordinate;
[_mapView setRegion:region animated:YES];
}