我有一个问题。在我的应用中,当表格的行被点击时,带有选择器的操作表打开。 我的问题是,当主线程被阻塞但触摸事件被添加到运行循环中时,动作片剂不会打开,因此,每当主线程发生变化时,它会完成所有触摸动作,从而根据我们点击的次数打开动作表单在桌子上。但我只想要这一次。主线程被阻塞时避免表视图didSelectRowIndexPath动作
如何解决这个问题???
我有一个问题。在我的应用中,当表格的行被点击时,带有选择器的操作表打开。 我的问题是,当主线程被阻塞但触摸事件被添加到运行循环中时,动作片剂不会打开,因此,每当主线程发生变化时,它会完成所有触摸动作,从而根据我们点击的次数打开动作表单在桌子上。但我只想要这一次。主线程被阻塞时避免表视图didSelectRowIndexPath动作
如何解决这个问题???
主线程不应该是“封锁” ......尝试运行无论是通过执行以下操作“阻塞”在不同的线程的主线程。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self doSomeLongTask]; // 1
dispatch_async(dispatch_get_main_queue(), ^{
[self longTaskDidFinish]; // 2
});
});
嗨,谢谢你的回复。但是,我无法做到bcz数据库操作正在执行当时在主线程 – rtk123
@ToheedKhan为什么你不能在一个单独的线程上做这些? – 2013-08-17 21:08:17
为什么主线程“* blocked *”? – 2013-08-17 18:09:50
用户界面始终位于主队列中,因此您绝对不应阻止主队列。所以,你的问题应该是“如何在不阻塞主队列的情况下执行这些数据库操作?” (当然,包括适当的代码样本)。 – Rob