您好我的iOS应用程序中我应该在后台线程中获取CLLocation更新因此我创建了CLLocation对象,如下所示
dispatch_queue_t globalConcurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_async(globalConcurrentQueue,^{
objAppDelegate.locationManager.DistanceFilter =Constants.kDISTANCE_FILTER;
objAppDelegate.locationManager.DesiredAccuracy =CLLocation.AccurracyBestForNavigation;
objAppDelegate.locationManager.StartUpdatingLocation ();
});
可以吗?我在一些门户网站上看到它,根据苹果指南,我们应该严格地在主线程上调用CLLocation更新,是这样的吗?
答案 0 :(得分:3)
没有必要从后台线程调用locationManager
,它的大部分调用都是异步的。所以最好从主线程调用它,虽然不是必需的。此外,重要的是要注意,无论你开始什么线程的位置管理员' from是它的代表将被调用的线程。
根据文档:
从您启动相应位置服务的线程调用委托对象的方法。该线程本身必须有一个活动的运行循环,就像在应用程序的主线程中找到的那样。