Swift GCD中的持久线程

时间:2015-05-22 14:00:50

标签: ios iphone multithreading swift grand-central-dispatch

我是Swift GCD的新手。有人可以解释一下GCD背景线程的想法吗? 我想继续使用后台线程(永远不会被杀死)获取传感器数据,并在主线程中运行UI和其他东西(假设应用程序在前台运行)。目前,我尝试过这样的事情(在AppDelegate.swift的'应用程序'函数中):

dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_BACKGROUND.value), 0)) {

        dispatch_async(dispatch_get_main_queue()) {
            SensorCollection.sensorActivate(CMMotionManager())
        }
}

SensorCollection:我创建的传感器集合类。 sensorActivate:一个类函数。 CMMotionManager():内置的快速运动管理器。

1 个答案:

答案 0 :(得分:1)

  

我想使用后台线程持续获取传感器数据

这就是内置的CMMotionManager调用所有让你做的事情,所以只需使用它们并停止尝试自己管理线程。

例如,startGyroUpdatesToQueue:withHandler:允许您指定队列。 startMagnetometerUpdatesToQueue:withHandler:允许您指定队列。等等。

因此,只需创建一个队列,将其存储在属性中,并在开始更新时指定该队列。问题解决了。当你不知道自己在做什么时,不要通过添加自己的线程来使这更复杂。