使用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 <Foundation/Foundation.h>
- #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
如果是用的ASI的话:
在AppDelegate.h里面导入头文件:
#import "Reachability.h"
添加类方法:
+(BOOL) isConnectionAvailable;//判断是否有网络
在.m里面
- +(BOOL) isConnectionAvailable{
- BOOL isExistenceNetwork = YES;
- Reachability *reach = [Reachability reachabilityWithHostName:@"www.apple.com"];
- NSParameterAssert([reach isKindOfClass:[Reachability class]]);
- NetworkStatus stats = [reach currentReachabilityStatus];
- if (stats == NotReachable)
- //没有网络
- isExistenceNetwork = NO;
- else if (stats == ReachableVia3G)
- isExistenceNetwork = YES;
- else if (stats == ReachableVia2G)
- isExistenceNetwork = YES;
- else if (stats == ReachableViaWiFi)
- isExistenceNetwork = YES;
- if (!isExistenceNetwork) {
- return NO;
- }
- return isExistenceNetwork;
- }
也可以用上面那种方式,利用单利+模型,来记录当前网络的具体状态!
来源: http://www.phpxs.com/code/1005569/