臨時禁用了本地服務和應用許可,這樣可以測試一些處理場景的代碼。再次開啟後,就不能再獲取當前位置了,代碼如下:
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")];
}
}