我们可以在后台线程上创建CLLocation更新吗?

时间:2015-09-28 14:09:06

标签: ios iphone multithreading cllocationmanager cllocation

您好我的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更新,是这样的吗?

1 个答案:

答案 0 :(得分:3)

没有必要从后台线程调用locationManager,它的大部分调用都是异步的。所以最好从主线程调用它,虽然不是必需的。此外,重要的是要注意,无论你开始什么线程的位置管理员' from是它的代表将被调用的线程。

根据文档:

  

从您启动相应位置服务的线程调用委托对象的方法。该线程本身必须有一个活动的运行循环,就像在应用程序的主线程中找到的那样。

相关问题