iOS开发 之 检测是否有网络连接

点击查看所参考的技术文章

利用单利+模型,来记录当前网络的具体状态.

如果工程里面是用的AFNetworking请求网络数据,可直接使用AFNetworkReachabilityManager.h来判断网络状态。

使用AF请求网络:
在AppDelegate.h里面添加类方法:
+(void)netWorkStatus;//获取网络状态
在.m里面
import "AppDelegate.h" import "ViewController.h" import "AFNetworkReachabilityManager.h"//af里面监听网络状态的类 import "FileManager.h"//单利模型,用来记录当前的网络状态 . @interface AppDelegate () . @end . . @implementation AppDelegate . -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ViewController *view = [[ViewController alloc] init]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:view]; self.window.rootViewController = nav; //调用网络状态 [AppDelegate netWorkStatus]; return YES; } . +(void)netWorkStatus { /** AFNetworkReachabilityStatusUnknown = -1, // 未知 AFNetworkReachabilityStatusNotReachable = 0, // 无连接 AFNetworkReachabilityStatusReachableViaWWAN = 1, // 3G 花钱 AFNetworkReachabilityStatusReachableViaWiFi = 2, // WiFi // 如果要检测网络状态的变化,必须用检测管理器的单例的startMonitoring [[AFNetworkReachabilityManager sharedManager] startMonitoring]; // 检测网络连接的单例,网络变化时的回调方法 [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { //这是单利+模型,用来记录网络状态 FileManager *maa = [FileManager shareFileManager]; maa.netState = status; // NSLog(@"-----网络状态----%ld---%d", status,maa.netState); }]; }

创建一个.h文件命名为Singleton
// Singleton.h // SingletonModel // Created by 琳小兮 on 15/5/21. // Copyright (c) 2015年 琳小兮. All rights reserved. // //因为方法名 shared"ClassName"是连在一起的,为了让宏能够正确替换掉签名中的“ClassName”需要在前面加上 ## //当宏的定义超过一行时,在末尾加上“\”表示下一行也在宏定义范围内。注意最后一行不需要加"\”。 //使用方法:(单利配合模型使用很方便) //在.h里面(//公开的访问单利对象的方法singleton_interface(MyModel)) //在.m里面(singleton_implementation(MyModel)) . define singleton_Interface(class) + (class *)share##class; define singleton_implemetntion(class)\ static class * instance = nil;\ . +(class *)share##class\ {\ if (!instance) {\ instance = [[class alloc]init];\ }\ return instance;\ }\ . +(class *)allocWithZone:(struct _NSZone *)zone\ {\ static dispatch_once_t onece;\ dispatch_once(&onece, ^{\ instance = [super allocWithZone:zone];\ });\ return instance;\ }

然后创建模型,命名为FileManager
在FileManager.h里面

import import "Singleton.h" . @interface FileManager :NSObject . singleton_Interface(FileManager) @property (nonatomic,assign) int netState; . @end

在FileManager.m里面

import "FileManager.h" . @implementation FileManager . singleton_implemetntion(FileManager) . @end

你可能感兴趣的:(iOS开发 之 检测是否有网络连接)