wait_fences:收不到回复:10004003错误

时间:2012-10-02 19:05:15

标签: objective-c ios ios5

我有一些在块中运行的简单代码(完成块)。在完成块中,如果块中的进程返回FALSE,我想显示UIAlertView。作为最佳实践,您不应该在后台线程中调用任何UI方法,因此我使用dispatch_get_main_queue来显示UIAlertView。除了我收到wait_fences:没有收到回复:U400lert视图中的取消按钮被按下时出现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:收不到回复:100040003错误消息。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

removeFromSuperview直接影响视图层次结构,该层次结构计为触及UI。您无法从后台线程触摸UI。您还需要将[self.mbProgressHUD removeFromSuperview];放到主队列中。