确定并不总是被称为

时间:2014-07-03 01:59:44

标签: ios core-location

是否有其他人有问题确定并不总是被调用?有时我打电话

[self.locationManager requestStateForRegion:region]; 

没有任何反应。奇怪的是,当我在

中插入一个断点时
-(void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region

它开始工作并被召唤!这对我来说似乎很不稳定。

2 个答案:

答案 0 :(得分:12)

在监控区域后立即请求区域状态时,我经常会遇到此问题。

e.g。

[self.locationManager startMonitoringForRegion:region];
[self.locationManager requestStateForRegion:region];

我确保调用requestStateForRegion调用didDetermineStateForRegion:调用startMonitoringForRegion后不久。现在它不是一个很好的解决方案,它应该小心使用,但它似乎解决了这个烦人的问题。代码

[self.locationManager startMonitoringForRegion:region];
[self.locationManager performSelector:@selector(requestStateForRegion:) withObject:region afterDelay:1];

答案 1 :(得分:3)

也许将requestStateForRegion调用放在委托方法didStartMonitoringForRegion中会更好。在监视(异步)实际开始之前,可能正在运行requestStateForRegion。

- (void) locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region {
    NSLog(@"Started Monitoring for Region:\n%@",region.description);
    [self.locationManager requestStateForRegion:region];
}