2013-08-17 43 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

相關問題