我有一些在块(完成块)中运行的简单代码。在完成块中,如果块中的进程返回 FALSE,我想显示一个 UIAlertView。作为最佳实践,您不应该在后台线程中调用任何 UI 方法,因此我使用 dispatch_get_main_queue 来显示 UIAlertView。这可以正常工作,除了当按下 UIAlert 视图中的取消按钮时我收到 wait_fences: failed to receive reply: 10004003 错误消息。
代码如下。我不确定该怎么做,据我所知,代码看起来是正确的并且应该可以工作,但显然它存在问题。我希望另一双眼睛可以帮助找到问题。
__block bool theResult;
[self.mbProgressHUD showAnimated:YES whileExecutingBlock:^{
theResult = [someClass someMethodThatReturnsTRUEorFALSE];
} completionBlock:^{
[self.mbProgressHUD removeFromSuperview];
if (theResult) {
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *theAlert....
[theAlert show];
});
};
}];
除非在 UIAlert 中选择了 OK 按钮,否则一切似乎都可以正常工作。我收到 wait_fences: failed to receive reply: 100040003 错误消息。
任何帮助将不胜感激。