2014-09-29 2 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

Вы не должны выполнять код, связанный с пользовательским интерфейсом, в фоновом потоке. – Adam

+0

Отлично! Спасибо! –

ответ

4

Вы пытаетесь выполнить процесс, который может быть выполнен только в основном потоке. Поместите код в

dispatch_async(dispatch_get_main_queue(), ^{ 

}) 
Смежные вопросы