临时禁止后CLLocationManager不返回位置

临时禁用了本地服务和应用许可,这样可以测试一些处理场景的代码。再次开启后,就不能再获取当前位置了,代码如下:

CLLocationManager *locationManager = [ [CLLocationManager alloc] init];
[locationManager startUpdatingLocation];
CLLocation *currentLocation = locationManager.location;
[locationManager stopUpdatingLocation];

运行代码后locationManager.location等于nil

设备是ios6的iPad。

设置CLLocationManager代理:

CLLocationManager *locationManager = [ [CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager startUpdatingLocation];

然后试试CLLocationManager的代理:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    self.currentLocation = newLocation;            
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
    // The location "unknown" error simply means the manager is currently unable to get the location.
    // We can ignore this error for the scenario of getting a single location fix, because we already have a
    // timeout that will stop the location manager to save power.
    if ([error code] != kCLErrorLocationUnknown) {
        [self stopUpdatingLocation:NSLocalizedString(@"Error", @"Error")];
    }
}