0

我正在尝试让 ASIReachability 在我的应用程序中工作,该应用程序在连接不存在时工作,但当连接存在时,它会给出以下错误:

2013-04-08 12:26:20.501 你的 Llanelli Companion [1576:207] -[NSConcreteNotification isReachable]:无法识别的选择器发送到实例 0x7d84d30

我似乎无法解决这个问题,它开始困扰我。

.m 文件:

- (void) CheckIfAInternetConnectionExists
{
    Reachability *reach = [[Reachability reachabilityWithHostName:@"http://176.31.101.181:8020/listen.pls"]retain ];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(reachabilityChanged:)
                                                 name:kReachabilityChangedNotification
                                                object:nil];
    [reach startNotifier];    
}

- (void) reachabilityChanged:(Reachability *)reach {
    if ([reach isReachable ]) {
        NSLog(@"connection");
        ServerFound = YES;
        [self PrepareStream];
    } else{
        NSLog(@"no connection");
        ServerFound = NO;
        [self PrepareStream];
    }
}

如果有人能为我解决这个问题,我将不胜感激。

4

1 回答 1

4

当您收到通知时,您的reachabilityChanged:方法的参数将是通知本身。要获取 Reachability 对象,您需要通过发送-[NSNotification object]到通知来从通知中获取它。

所以这样的事情应该有效:

- (void) reachabilityChanged:(NSNotification *)note {

    Reachability *reach = [note object];

    if ([reach isReachable ]) {
        NSLog(@"connection");
        ServerFound = YES;
    } else{
        NSLog(@"no connection");
        ServerFound = NO;
    }

    [self PrepareStream];

  }
于 2013-04-08T11:53:56.433 回答