问题描述
- 临时禁止后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")];
}
}
时间: 2024-10-06 16:35:00