wait_fences:未能收到回复:10004003错误 - 带有UIActivityIndi​​catorView的UIAlertView

时间:2011-03-02 01:36:11

标签: iphone spinner uialertview delay

我希望squeezemylime's question的答案可以解决我的问题,因为我还有一个没有文本字段的UIAlertView但是效果不好。我没有在文本字段中放置UIActivityIndi​​catorView动画,也没有在创建时使用按钮。因此,警报以编程方式被解除,以便委托方法在警报和警报本身(通过运行时间保留)中销毁微调器。

所以,我在调试器中也得到了这些 wait_fences:消息,同时我也被冻结了,因为我尝试的所有内容都包含了这个线程中的有价值的提示,不会杀死这些 wait_fences:消息。无论是GDB还是设备都没有崩溃。

单步执行代码后,我意识到 dismissWithClickedButtonIndex:0 animated:NO 的委托后,会立即显示 wait_fences:消息,以释放可疑的UIAlertView。然后我认为它可能类似于 squeezemylime 的延迟技术并做到了这一点:

[theAlertObj performSelector:@selector(dismissWithClickedButtonIndex:animated:) withObject:nil afterDelay:0.1];

并且 wait_fences:消息消失了!但是对 dismissWithClickedButtonIndex:animated:的调用无法满足,因为它缺少第二个参数动画:否 - 所以我尝试了一些实现方法的更改拨打:

- (void)dismissNamedAlert: (UIAlertView*)alert
{
    [alert dismissWithClickedButtonIndex:0 animated:NO];
}

- (void)postProcessLogicalWork: (id)arg
{
    [self performSelector:@selector(dismissNamedAlert:) withObject:theAlertObj afterDelay:0.2];
    ...
}

Bummer: wait_fences:消息重新出现!我想我不能回到有一个不满意的方法调用的工作解决方案 - 那么怎么办呢?和/或在哪些情况下会发生这些 wait_fences:消息?

简单地说,我的工作流程是这样的:

  • viewDidAppear调用其 super ,然后调用我的数据更新程序 afterDelay:0.3f
  • 数据更新程序为更新过程调用新线程
  • 新线程在主线程上创建并显示带有微调器的警报,然后运行几秒钟
  • 新主题在主线程上执行完成程序并完成
  • 终结者如上所述解除警报(使用 wait_fences:)并在需要时刷新显示
  • 其余的是空闲时间......暂时

任何想法该怎么做?

1 个答案:

答案 0 :(得分:0)

我不知道事情发生的原因,但通过改变这一行来解决这个问题

[alert dismissWithClickedButtonIndex:0 animated:NO];

到这个

[alert dismissWithClickedButtonIndex:0 animated:YES];