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];
}
}
本文探讨了iOS应用中网络访问状态变化的两种方法:使用block和NSNotification通知。通过Reachability类监听网络状态,并在可达性改变时分别触发block和NSNotification。详细介绍了如何在后台线程使用block更新UI,以及在主线程上使用NSNotification进行UI更新。
841

被折叠的 条评论
为什么被折叠?



