#ios #core-location
#iOS #расположение ядра
Вопрос:
У кого-нибудь еще есть проблема с тем, что diddeterminestate не всегда вызывается? Иногда, когда я вызываю
[self.locationManager requestStateForRegion:region];
и ничего не происходит. Любопытно, что когда я вставляю точку останова в
-(void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
он начинает работать и вызывается! Мне это кажется очень нестабильным.
Ответ №1:
Я часто сталкивался с этой проблемой, запрашивая состояние региона сразу после его мониторинга.
например
[self.locationManager startMonitoringForRegion:region];
[self.locationManager requestStateForRegion:region];
Я убедился, что didDetermineStateForRegion был вызван путем планирования requestStateForRegion: вскоре после вызова startMonitoringForRegion. Сейчас это не самое лучшее решение, и его следует использовать осторожно, но мне показалось, что оно устранило эту досадную проблему. Приведенный ниже код
[self.locationManager startMonitoringForRegion:region];
[self.locationManager performSelector:@selector(requestStateForRegion:) withObject:region afterDelay:1];
Комментарии:
1. Аааа. Похоже, здесь все борются с одними и теми же ветряными мельницами… Столкнулся с той же проблемой, и это обходное решение — уродливое, признал — исправило его.
Ответ №2:
Возможно, было бы лучше поместить вызов requestStateForRegion внутри метода делегирования didStartMonitoringForRegion. Вероятно, что requestStateForRegion выполняется до фактического запуска мониторинга (который является асинхронным).
- (void) locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region {
NSLog(@"Started Monitoring for Region:n%@",region.description);
[self.locationManager requestStateForRegion:region];
}
Комментарии:
1. всякий раз, когда я вызываю self.LocationManager?.startMonitoring (для: currRegion), в этот раз startMonitoringForRegion вызывал 2 раза.