另一个“wait_fences:未能收到回复”问题(UIAlertView)

时间:2010-07-08 19:13:13

标签: iphone uialertview reachability

关于这个论坛上的“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问题:有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在这里,我在项目中也遇到了同样的问题,我解决了“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问题。如果你还有问题,请告诉我。