我制作了一个当前需要使用您的位置才能工作的天气应用程序。我忙于试图获取该依赖项,但我仍需要在第一次启动时知道用户是否允许它,以创建当前位置管理对象。由于CLLocationManager导致应用程序挂起(mainThread被阻止?)
这个想法是,它加载的前几件事,然后要求许可,如果有必要,并继续之后。它起初工作,我不知道我改变了什么打破它,但我希望你们中的一些人可以看到什么是错的。我一直在盯着自己几个小时,所以一些新的观点,将不胜感激:)
对于第二次阅读这个问题的人:是的,我重新写了这个问题,因为问题似乎比我想象的还要别处。
我的应用程序永远不会越过这一段代码:
dispatch_sync(dispatch_get_main_queue(), ^{
locationManager = [[CLLocationManager alloc]init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
[locationManager startUpdatingLocation];
});
这是发生在我的didFinishLaunching方法的第一件事情,我无法找到任何会被阻塞mainthread。早些时候,我遇到了类似的问题,我设法从位置管理器获得授权,但稍后应用程序停止在主队列上的一个分派中(以初始化我的接口)。那为什么它被封锁?
这很奇怪,但我也有同样的问题,甚至乳清我从后台线程调用完全相同的代码。 –