0

我的应用程序卡在CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION. 在我的应用程序中,我调用了一个异步的 C 函数。我在执行过程中显示等待消息。
当这个函数终止时,它调用一个委托来关闭等待的消息并同时显示一个 AlertView。

我使用 gcd 显示警报视图

dispatch_async(dispatch_queue_create("com.myapp.service.waitingmessage", nil), ^{
            dispatch_async(dispatch_get_main_queue(), ^{
            UIAlertView *anAlert = ...
            [anAlert show];
             });
        });

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

在此处输入图像描述

4

1 回答 1

-1

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

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

于 2014-10-22T12:16:26.360 回答