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];
}
}