首先导入AFNetworking第三方框架,然后将下面的.h和.m放在你新建的类中便可
GGNetworkJudge.h 在最后会有Singleton.h头文件代码
1 #import <Foundation/Foundation.h> 2 #import "AFNetworkReachabilityManager.h" 3 #import "Singleton.h" //此处是将一个普通类转化为单例类的头文件 4 5 @interface GGNetworkJudge : NSObject 6 7 singleton_interface(GGNetworkJudge); 10 11 //监测网络状态 12 - (void)checkNetworkStatus; 13 14 @end
GGNetworkJudge.m
1 #import "GGNetworkJudge.h" 2 #import <UIKit/UIKit.h> 3 4 @implementation GGNetworkJudge 5 singleton_implementation(GGNetworkJudge); 6 7 #pragma mark - 私有方法 8 #pragma mark 网络状态变化提示 9 -(void)alert:(NSString *)message{ 10 UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"系统信息" message:message delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil]; 11 [alertView show]; 12 } 13 14 #pragma mark 网络状态监测 15 -(void)checkNetworkStatus{ 16 17 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; 18 19 //开始监控 20 [manager startMonitoring]; 21 22 23 // 检测网络连接的单例,网络变化时的回调方法 24 [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { 25 26 switch (status) { 27 case AFNetworkReachabilityStatusReachableViaWWAN: 28 //[self alert:@"2G/3G/4G Connection."]; 29 [self alert:@"网络已连接"]; 30 31 break; 32 case AFNetworkReachabilityStatusReachableViaWiFi: 33 // [self alert:@"WiFi Connection."]; 34 35 [self alert:@"网络已连接"]; 36 break; 37 case AFNetworkReachabilityStatusNotReachable: 38 // [self alert:@"Network not found."]; 39 [self alert:@"网络已断开,请检查网络设置"]; 40 41 42 break; 43 44 default: 45 // [self alert:@"Unknown."]; 46 [self alert:@"网络未知错误"]; 47 48 break; 49 50 } 51 52 }]; 53 54 55 56 57 58 } 59 60 61 @end
Singleton.h
1 /* 2 专门用来保存单例代码 3 最后一行不要加 4 */ 5 6 // @interface 7 #define singleton_interface(className) 8 + (className *)shared##className; 9 10 11 // @implementation 12 #define singleton_implementation(className) 13 static className *_instance; 14 + (id)allocWithZone:(NSZone *)zone 15 { 16 static dispatch_once_t onceToken; 17 dispatch_once(&onceToken, ^{ 18 _instance = [super allocWithZone:zone]; 19 }); 20 return _instance; 21 } 22 + (className *)shared##className 23 { 24 static dispatch_once_t onceToken; 25 dispatch_once(&onceToken, ^{ 26 _instance = [[self alloc] init]; 27 }); 28 return _instance; 29 }