2014-09-29 33 views
2

我正在使用dispatch_async在其他腳本上執行某些操作。目標C - 調用dispatch_async顯示錯誤

dispatch_queue_t backgroundQueue; 

在viewDidLoad中:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    backgroundQueue = dispatch_queue_create("dispatchName", NULL); 
} 

使用它:

dispatch_async(backgroundQueue,^
{ 
    // Do something... 
}); 

一切正常,直到我再次調用此方法。 該應用程序是錯誤美眉:

2014-09-29 11:34:10.626 hELLO[2785:389790] *** Assertion failure in -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished], /SourceCache/UIKit_Sim/UIKit-3318/Keyboard/UIKeyboardTaskQueue.m:374 
2014-09-29 11:34:10.628 hELLO[2785:389790] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.' 
+4

您不應該在後臺線程上執行任何與UI相關的代碼。 – Adam 2014-09-29 08:41:28

+0

太棒了!謝謝! – 2014-09-29 08:47:54

回答

4

您正試圖執行過程中,只能在主線程中執行。 將代碼放入

dispatch_async(dispatch_get_main_queue(), ^{ 

})