我是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():内置的快速运动管理器。
答案 0 :(得分:1)
我想使用后台线程持续获取传感器数据
这就是内置的CMMotionManager调用所有让你做的事情,所以只需使用它们并停止尝试自己管理线程。
例如,startGyroUpdatesToQueue:withHandler:
允许您指定队列。 startMagnetometerUpdatesToQueue:withHandler:
允许您指定队列。等等。
因此,只需创建一个队列,将其存储在属性中,并在开始更新时指定该队列。问题解决了。当你不知道自己在做什么时,不要通过添加自己的线程来使这更复杂。