Objective c 在运行代码之前,等待用户对允许位置服务的响应

Objective c 在运行代码之前,等待用户对允许位置服务的响应,objective-c,cllocationmanager,Objective C,Cllocationmanager,我有以下代码来调用location services,从而引发权限警报,我希望在它们允许或拒绝时显示视图时运行我的代码 在我的viewDidLoad方法中,我的代码如下所示,但尽管这在他们第二次加载应用程序时起作用,但在他们做出选择后,两个选项都不会在第一次运行。从本质上说,有没有办法让这段代码等待,让它只在他们做出选择后运行 CLLocationCoordinate2D coordinate = [self getLocation]; if ([CLLocationManager author

我有以下代码来调用location services,从而引发权限警报,我希望在它们允许或拒绝时显示视图时运行我的代码

在我的viewDidLoad方法中,我的代码如下所示,但尽管这在他们第二次加载应用程序时起作用,但在他们做出选择后,两个选项都不会在第一次运行。从本质上说,有没有办法让这段代码等待,让它只在他们做出选择后运行

CLLocationCoordinate2D coordinate = [self getLocation];
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized)
{
    NSLog(@"location enabled");
    [self getDataFromJson];

} else {
    NSLog(@"location disabled");
    //show them a view telling them to allow location services
}

您应该分配一个符合CLLocationManagerDelegate协议的委托,并通过实现locationManager:didChangeAuthorizationStatus:

来响应授权状态的更改。您应该分配一个符合CLLocationManagerDelegate协议的委托,并通过以下方式响应授权状态的更改:实现locationManager:didChangeAuthorizationStatus:

否,您不想让此代码等待。。事实上,您永远不想在viewDidLoad或主线程上的任何位置执行任何操作,因为这需要等待。而是按照NSBurn讨论的方式实现,查看那里的状态,相应地更新UI。不,您不想让此代码等待。。事实上,您永远不想在viewDidLoad或主线程上的任何位置执行任何操作,因为这需要等待。而是按照NSBurn讨论的方式实现,查看那里的状态,相应地更新UI。