NSOperationQueue和发送委托给主线程
嗨,我有我的类传感器在那里我有GPS,陀螺仪,加速度计,我想Ø从nsoperationqueue在委托发送数据:NSOperationQueue和发送委托给主线程
@protocol SensorsDelegate <NSObject>
@optional
- (void)motionManagerDidAccelerateData:(CMAccelerometerData *)accelerometerData;
@end
- (void)startAccelerometr
{
if (motionManager.accelerometerAvailable) {
self.motionManager.accelerometerUpdateInterval = 1.0/10.0;
[self.motionManager startAccelerometerUpdatesToQueue:self.operationQueue
withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
if (error) {
[motionManager stopAccelerometerUpdates];
}
else {
[self.delegate motionManagerDidAccelerateData:accelerometerData];
}
}];
}
}
如何将数据发送到委派这是在主线程中?或发送加速器数据?
放在同一类onMainThread:
方法,改变你的代码是这样
- (void)startAccelerometr
{
if (motionManager.accelerometerAvailable) {
self.motionManager.accelerometerUpdateInterval = 1.0/10.0;
[self.motionManager startAccelerometerUpdatesToQueue:self.operationQueue
withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
if (error) {
[motionManager stopAccelerometerUpdates];
}
else {
[self performSelectorOnMainThread:@selector(onMainThread:)
withObject:accelerometerData waitUntilDone:NO];
}
}];
}
}
- (void)onMainThread:(id)accelerometerData{
[self.delegate motionManagerDidAccelerateData:accelerometerData];
}
您是否尝试过使用
[self.delegate performSelectorOnMainThread:@selector(motionManagerDidAccelerateData:) withObject:accelerometerData waitUntilDone:NO];
不错的.... +1这个 – 2012-02-16 16:37:31
UE的委托不具备主thred performselector:/我用notofication中心fonally – mientus 2012-02-16 16:51:19
您可以performSelectorInMainThread只要您的代理被定义为NSObject
改变队列您要发送的加速度更新到主队列。
[self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
你可以试试:
假设委托是在传感器init方法分配NSObject<SensorDelegate>*
类型的属性:
[self.delegate performSelectorOnMainThread:@selector(motionManagerDidAccelerateData:) withObject:accelerometerData waitUntilDone:NO];
希望它能帮助。
它不起作用 – mientus 2012-02-17 08:35:31
我会检查它的明天,但似乎看起来非常漂亮+1 – mientus 2012-02-16 16:54:01