1

我在这里对授权状态有些麻烦,我不确定发生了什么。

 if(sender.on == TRUE)
{
    [self.locationManager startUpdatingLocation];
    [self.locationManager startUpdatingHeading];

    CLAuthorizationStatus authStatus = [CLLocationManager authorizationStatus];
    bool headingStatus = [CLLocationManager headingAvailable];

    if( !(authStatus == kCLAuthorizationStatusAuthorized))
    {
        [self processFailedAuthorization:authStatus];
        [locationManager stopUpdatingHeading];
        [locationManager stopUpdatingLocation];
        sender.on = FALSE;

    }

kCLAuthorizationStatusNotDetermined尽管刚刚提示用户进行授权,但似乎 authStatus 有时会显示。

我已经在调试器中逐步完成了代码,似乎如果我在检查之前等待一小段时间,CLAuthorizationStatus那么它确实会按授权返回,而如果我立即检查则不会。

我知道我可以等待一秒钟左右然后继续,但文档中没有任何关于需要延迟的内容。

这是怎么回事?

4

1 回答 1

2

CLLocationManagerDelegate有一个回调,locationManager :didChangeAuthorizationStatus:,让您知道授权状态何时发生变化。它将新状态传递给您的代表。这就是要查看的状态。就像位置一样,CLLocationManager 对象中的状态也可以改变。

于 2012-10-06T21:29:46.233 回答