Я пытаюсь использовать CLLocationManager
в NSOperation
. В качестве части этого я требую возможность startUpdatingLocation
, затем дождаться, пока CLLocation не будет получен до завершения операции.
В настоящее время я сделал следующее, однако метод делегата никогда не называется. Пожалуйста, кто-нибудь может сообщить, в чем проблема?
- (void)main
{
@autoreleasepool {
if (self.isCancelled)
return;
// Record the fact we have not found the location yet
shouldKeepLooking = YES;
// Setup the location manager
NSLog(@"Setting up location manager.");
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
while (shouldKeepLooking) {
if (self.isCancelled)
return;
// Do some other logic...
}
}
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
// None of this ever seems to be called (despite updating the location)
latestLocation = [locations lastObject];
[manager stopUpdatingLocation];
shouldKeepLooking = NO;
}