应用程序卡在CPU使用率高达100%

时间:2014-10-22 11:41:42

标签: ios grand-central-dispatch cfrunloop

我的应用程序停留在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];
             });
        });

以下是应用程序卡住时调试器XCode的屏幕截图。 我还看到我的应用程序的CPU使用率高达100%,这也许就是系统暂停应用程序的原因。

enter image description here

1 个答案:

答案 0 :(得分:-1)

使用dispatch_sync()代替dispatch_async(dispatch_get_main_queue(), ^{...

您无法从后台线程更新UI。