2013-08-17 27 views
0

我有一个问题。在我的应用中,当表格的行被点击时,带有选择器的操作表打开。 我的问题是,当主线程被阻塞但触摸事件被添加到运行循环中时,动作片剂不会打开,因此,每当主线程发生变化时,它会完成所有触摸动作,从而根据我们点击的次数打开动作表单在桌子上。但我只想要这一次。主线程被阻塞时避免表视图didSelectRowIndexPath动作

如何解决这个问题???

+0

为什么主线程“* blocked *”? – 2013-08-17 18:09:50

+0

用户界面始终位于主队列中,因此您绝对不应阻止主队列。所以,你的问题应该是“如何在不阻塞主队列的情况下执行这些数据库操作?” (当然,包括适当的代码样本)。 – Rob

回答

1

主线程不应该是“封锁” ......尝试运行无论是通过执行以下操作“阻塞”在不同的线程的主线程。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    [self doSomeLongTask]; // 1 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self longTaskDidFinish]; // 2 
    }); 
}); 
+0

嗨,谢谢你的回复。但是,我无法做到bcz数据库操作正在执行当时在主线程 – rtk123

+1

@ToheedKhan为什么你不能在一个单独的线程上做这些? – 2013-08-17 21:08:17