我有一個問題。在我的應用中,當表格的行被點擊時,帶有選擇器的操作表打開。 我的問題是,當主線程被阻塞但觸摸事件被添加到運行循環中時,動作片劑不會打開,因此,每當主線程發生變化時,它會完成所有觸摸動作,從而根據我們點擊的次數打開動作表單在桌子上。但我只想要這一次。主線程被阻塞時避免表視圖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