diddeterminestate并不总是被称为

其他人有没有总是被称为diddeterminestate的问题? 有时候我打电话

[self.locationManager requestStateForRegion:region]; 

没有任何反应 好奇的是,当我插入一个中断点

 -(void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region 

它开始工作,被称为! 对我来说这似乎很不稳定。

我在监测一个地区的状态时,经常遇到这个问题。

例如

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

我确保通过调度requestStateForRegion来调用didDetermineStateForRegion:在调用startMonitoringForRegion之后不久。 现在这不是一个很好的解决scheme,应该小心使用,但似乎解决了这个烦人的问题。 下面的代码

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

也许把requestStateForRegion调用放在委托方法didStartMonitoringForRegion中会更好。 在监视(这是asynchronous)实际上已经开始之前,可能会运行requestStateForRegion。

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