tonymillion/Reachability是GitHub上的一个开源工具类,目測是依据Apple的Reachability Demo改写而成。

该类能够測试到某一网络、主机等的可达性,支持Block语法和监听网络连接状态,很有用。详细使用方法參加GitHub上的说明。

写了个小Demo试用了一下:

- (void)viewDidLoad {
[super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
[button setTitle:@"Listen" forState:UIControlStateNormal];
[button addTarget:self action:@selector(reachable) forControlEvents:UIControlEventTouchUpInside];
button.frame = CGRectMake(0, 0, 100, 44);
button.center = self.view.center;
[self.view addSubview:button];
} - (void)reachable {
Reachability *reach = [Reachability reachabilityWithHostname:@"www.csdn.net"]; reach.reachableBlock = ^(Reachability *reachability) {
NSLog(@"Reachable");
}; reach.unreachableBlock = ^(Reachability *reachability) {
NSLog(@"Unreachable");
}; [reach startNotifier];
}

Run,点击Listenbutton(整个測试过程仅仅点击一次),然后断开wifi或网线。然后又连上,然后又断开,重复測试。。

控制台输出例如以下:

2014-07-24 23:35:54.669 ReachabilityDemo[2247:80409] Reachable
2014-07-24 23:35:59.797 ReachabilityDemo[2247:80409] Unreachable
2014-07-24 23:36:07.401 ReachabilityDemo[2247:80788] Reachable
2014-07-24 23:36:07.421 ReachabilityDemo[2247:80788] Reachable
2014-07-24 23:36:11.279 ReachabilityDemo[2247:80788] Unreachable
2014-07-24 23:36:17.523 ReachabilityDemo[2247:80964] Reachable
2014-07-24 23:36:17.541 ReachabilityDemo[2247:80964] Reachable

能够看到仅仅要reach開始监听网络状态,那么该类会一直监听其状态。

假设想要在reachableBlock和unreachableBlock中做什么处理动作。而且仅仅运行一次,就不要创建多个Reachability类实例进行监听了。否则同一个Block中的动作可能运行多次。

待要完毕的动作完毕后。停止监听即可了,这样两个Block都不会再被运行。

比如:

    reach.reachableBlock = ^(Reachability *reachability) {
NSLog(@"Reachable"); // Do something only once while reachable [reachability stopNotifier];
};

再Run。点击Listenbutton,断开wifi。连接wifi。反复。。。

控制台输出例如以下:

2014-07-24 23:50:56.814 ReachabilityDemo[2453:88238] Reachable

能够看到Block仅仅运行了一次。

最新文章

  1. 解决maven下载jar慢的问题(如何更换Maven下载源)
  2. 【解决方法】安装Win7和linux双系统后,linux报错“无法分配所提交的分区 not enough free space on disks”问题,以及win7无法启动“BootMGR image is corrupt....”问题
  3. px和em和rem的区别
  4. 关于vs生成app错误提示,提醒Execution failed for task ':transformClassesWithDexForDebug'.
  5. SVN中Branch和Merge实践
  6. 廖雪峰js教程笔记10 浏览器对象
  7. CSS 3 3D转换
  8. bzoj 1798 [Ahoi2009]Seq 维护序列seq
  9. Redis Master/Slave 实践
  10. zoj 1967 Fiber Network/poj 2570
  11. js实现编码,解码
  12. .bash_profile与.bashrc和.profile的区分概念
  13. 会员卡管理系统技术解析(十八)Timer定时监听
  14. TaskTracker获取并执行map或reduce任务的过程1
  15. iOS 程序间跳转传参(支付和地图)
  16. Android项目文件结构
  17. Java元编程及其应用
  18. Centos6、7下安装Nginx的两种方法
  19. Mp4 to Img
  20. luogu P4108 [HEOI2015]公约数数列——solution

热门文章

  1. lykops运维自动化
  2. http://www.cnblogs.com/monian/p/3822980.html
  3. Linux下免安装mysql
  4. 【招聘App】—— React/Nodejs/MongoDB全栈项目:消息列表
  5. onvif 协议
  6. xubuntu openocd nRF51822 download --- 2
  7. 数据结构之---C语言实现最小生成树之prim(普里姆)算法
  8. jquery autoComplete的使用代码一则
  9. HTML5开发移动web应用——Sencha Touch篇(10)
  10. 02-3设置第一启动项--进入BIOS设置USB方式启动