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;
define singleton_implemetntion(class)  static class * instance = nil;

+(class *)share
{
  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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,003评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,676评论 19 139
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 4,868评论 1 0
  • 单例:意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单...
    CoderZS阅读 3,690评论 1 13
  • 谈论那些 谈论不完的事 让我疲倦极了
    长马阅读 1,664评论 0 2