我正在执行以下方法:
运动处理器.m
-(void)startAccelerationUpdates
{
[motionManagerstartDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue]withHandler:^(CMDeviceMotion *motion, NSError *error){.....}
}
在后台线程上,如下所示:
[currentMotionHandler performSelectorInBackground:@selector(startAccelerationUpdates) withObject:nil];
但是上述方法使用main Queue
(在主线程上)执行必要的更新,即使我在后台线程上调用它。所以在后台线程或主线程上执行加速更新,我'我很困惑..?
更有趣的是,当我再次在后台线程上调用上述方法时,但这次使用current Queue
,我没有得到任何更新。有人可以解释一下在以下位置运行某些东西的区别:
1. a background thread but on the main queue
2. a background thread but on the current queue
3. the main thread but on the main queue
4. the main thread but on the current queue
在当前的实施中?谢谢!