Вы можете проверить, включены ли службы определения местоположения, прежде чем пытаться обновить местоположение.
Вот фрагмент кода, который я использую:
if (TARGET_IPHONE_SIMULATOR) {
currentLocation = [[CLLocation alloc] initWithLatitude:37.331718 longitude:-122.030629];
[self methodNameHere:currentLocation];
} else {
if ([CLLocationManager locationServicesEnabled]) {
[locationManager startUpdatingLocation];
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location Services Disabled" message:@"Enable location services to do this" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
[alert release];
}
}
По сути, код проверяет, нацелены ли вы на симулятор, который может выдавать вам ошибки, если вы пытаетесь получить местоположение, поэтому вместо этого я просто жестко кодирую местоположение, которое хочу смоделировать (в данном случае, Apple HQ) , При нацеливании на устройство он проверяет, включены ли службы определения местоположения, если это так, он вызывает метод, который вы хотите выполнить, если нет, он показывает пользователю сообщение с предупреждением.