Приложение зависло с загрузкой процессора до 100%
Мое приложение застряло с CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION
, В моем приложении я вызвал функцию C, которая является асинхронной. Я показываю сообщение ожидания во время выполнения.
Когда эта функция завершается, она вызывает делегата для закрытия этого ожидающего сообщения и одновременного отображения AlertView.
Я использую gcd чтобы показать alertview
dispatch_async(dispatch_queue_create("com.myapp.service.waitingmessage", nil), ^{
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *anAlert = ...
[anAlert show];
});
});
Вот скриншот Debugger XCode, когда приложение зависло. Я также вижу, что загрузка процессора моим приложением составляет до 100%, возможно, поэтому приложение приостановлено системой.
1 ответ
Использование dispatch_sync()
на месте dispatch_async(dispatch_get_main_queue(), ^{...
Вы не можете обновить пользовательский интерфейс из фонового потока.