如何重复可达性测试直到它起作用

时间:2013-04-06 18:19:08

标签: xcode reachability viewdidload

我有一个初始tableviewcontroller,它正在执行可达性检查。这在viewDidLoad然而中没有问题。我想知道重试连接的正确方法,直到它通过。我的实现文件中的相关代码如下所示,如果连接断开,我尝试插入[self ViewDidLoad],但这只是将应用程序设置为循环(返回连接失败NSLog消息)而不显示{ {1}}。

UIAlertView

1 个答案:

答案 0 :(得分:3)

您应该如何使用Reachability

  • 请先尝试连接。
  • 如果请求失败,Reachability将告诉您原因。
  • 如果网络出现,Reachability会通知您。然后重试连接。

要接收通知,请注册通知,然后从Apple启动可访问性类:

@implementation AppDelegate {
    Reachability *_reachability;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[NSNotificationCenter defaultCenter]
     addObserver: self
     selector: @selector(reachabilityChanged:)
     name: kReachabilityChangedNotification
     object: nil];

    _reachability = [Reachability reachabilityWithHostName: @"www.apple.com"];
    [_reachability startNotifier];

    // ...
}

@end

回答通知:

- (void) reachabilityChanged: (NSNotification *)notification {
    Reachability *reach = [notification object];
    if( [reach isKindOfClass: [Reachability class]]) {
    }
    NetworkStatus status = [reach currentReachabilityStatus]; 
    NSLog(@"change to %d", status); // 0=no network, 1=wifi, 2=wan
}

如果您更喜欢使用块,请使用KSReachability