我对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():内置的快速运动管理器。

最佳答案

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


这就是内置CMMotionManager调用的所有操作,因此,只需使用它们并停止尝试自己管理线程即可。

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

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

关于ios - Swift GCD中的持久性线程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30398741/

10-11 22:26
查看更多