1,block例子
这个例子使用block作为回调,当通讯接口发生改变。这些block将在后台线程上被调用,所以你需要调用主线程来更新UI。
- (void)viewDidLoad { [super viewDidLoad]; Reachability *reachability = [Reachability reachabilityWithHostname:@"www.google.cn"]; [reachability setReachableBlock: ^(Reachability * reachability){ NSLog(@"Reachability!"); }]; [reachability setUnreachableBlock:^(Reachability *reachability){ NSLog(@"UnReachability"); }]; //开始监听 [reachability startNotifier]; }
2, NSNotification例子
这个例子是使用NSNotification通知作为网络访问状态改变的方式。通知的传送是在主线程上进行的,因此在通知的指定方法中可以进行UI的更新。
此外我们还设置WWAN(3G/EDGE/CDMA)作为非到达连接
- (void)viewDidLoad { [super viewDidLoad]; Reachability *reachability = [Reachability reachabilityWithHostname:@"www.google.cn"]; reachability.reachableOnWWAN = NO; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityStateChanged:) name:kReachabilityChangedNotification object:nil]; [reachability startNotifier]; } - (void)reachabilityStateChanged:(NSNotification *)notification { Reachability *reachability = (Reachability *)notification.object; if (reachability.isReachable) { NSLog(@"Reachability"); }else{ NSLog(@"UnReachability"); } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; if (self.view.window ==nil) { [[NSNotificationCenter defaultCenter] removeObserver:self]; } }