我希望squeezemylime's question的答案可以解决我的问题,因为我还有一个没有文本字段的UIAlertView但是效果不好。我没有在文本字段中放置UIActivityIndicatorView动画,也没有在创建时使用按钮。因此,警报以编程方式被解除,以便委托方法在警报和警报本身(通过运行时间保留)中销毁微调器。
所以,我在调试器中也得到了这些 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:消息?
简单地说,我的工作流程是这样的:
任何想法该怎么做?
答案 0 :(得分:0)
我不知道事情发生的原因,但通过改变这一行来解决这个问题
[alert dismissWithClickedButtonIndex:0 animated:NO];
到这个
[alert dismissWithClickedButtonIndex:0 animated:YES];