【问题标题】:Another "wait_fences: failed to receive reply" Question (UIAlertView)另一个“wait_fences:未能收到回复”问题(UIAlertView)
【发布时间】:2011-03-13 12:47:50
【问题描述】:

在这个论坛上已经有很多关于“wait_fences:未能收到回复”的问题,但没有一个建议的解决方案对我有用(尽管它们确实帮助我缓解了它)。

当我的应用程序启动时,我会进行可达性检查,如果我无法访问我正在寻找的主机,我会弹出一个 UIAlertView。最初我什至在设置视图控制器之前就这样做了,但后来我了解到“wait_fences”问题的原因之一是如果您还没有显示视图,则响应程序链没有正确设置 - 所以我将所有内容都移到了 -viewDidAppear 中。基本上,这就是我所拥有的:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    // Figure out what the reflections name is, then check to see if it can find it online;
    // If it can't, -informUserSiteIsNotReachable is called, below
    [self retrieveReflectionByName:self.todaysReflectionName];

    [self displayReflectionByName:self.todaysReflectionName];
}

- (void)informUserSiteIsNotReachable 
{
    SEL messageSelector;

    if (NO == [self internetIsReachable]) {
        messageSelector = @selector(internetNotAccessible);
    } else {
        messageSelector = @selector(reflectionsSiteNotAccessible);
    }
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[Strings alertViewTitleWhenSiteIsUnreachable] message:[Strings performSelector:messageSelector]  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:NULL];
    [alert show];
    [alert release];
}

我似乎无法摆脱 wait_fences 问题:有什么建议吗?

【问题讨论】:

  • 没有人对我有任何建议,甚至没有建议阅读?我会做任何事情来摆脱这个消息(嗯,几乎任何事情)。
  • 嗨 JoBu 1324,你的问题得到任何答案了吗?旋转我的应用程序时,我也面临同样的问题。你能帮我解决这个问题吗?
  • 不,我没有;正如我所提到的,我能做的最好的事情是通过将警报移动到 -viewDidAppear 来最小化它导致的等待。如果您有任何发现,请告诉我!
  • 你肯定可以解决这个问题,因为我回答如下。您只需要使用一个 Timer 来延迟 AlertView。

标签: iphone uialertview reachability


【解决方案1】:

在这里,我在我的项目中也遇到了同样的问题,我解决了“wait_fences”的问题。

您可以在此处对代码进行如下更改:

- (void)informUserSiteIsNotReachable 
{
    SEL messageSelector;

    if (NO == [self internetIsReachable]) {
        messageSelector = @selector(internetNotAccessible);
    } else {
        messageSelector = @selector(reflectionsSiteNotAccessible);
    }

    [NSTimer scheduledTimerWithTimeInterval:0.001 target:self selector:@selector(Show_AlertMessage) userInfo:nil repeats:NO];
}

- (void) Show_AlertMessage
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[Strings alertViewTitleWhenSiteIsUnreachable] message:[Strings performSelector:messageSelector]  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:NULL];
    [alert show];
    [alert release];
}

这对我有用。希望你尽快摆脱这个 wait_fences 问题。如果您仍然有问题,请告诉我。

【讨论】:

  • 这可行,但我不喜欢在可靠性和响应时间之间进行权衡。我正在寻找一个猜测工作更少(即没有计时器)和更多“最佳实践”的答案
  • 您好,计时器以毫秒为单位。在这里,如果您不想要计时器,那么您可以选择使用 NSThread。你可以只试一次。我喜欢解决这个问题。
  • 计时器会比 NSThread 工作得更好,因为您可以设置计时器有足够的时间让响应者链建立起来。当我写这个问题时,我正在寻找一种方法来知道响应链何时完成设置 - 我最终从未发现。
  • 对不起,我不能接受你的答案,即使它会起作用,它只是不是我想要的答案。也许我正在寻找的东西无法完成;不过,可以使用各种美容创可贴——包括您列出的那一款。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 2010-11-25
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 2023-03-22
  • 2012-09-17
相关资源
最近更新 更多