iOS開發(fā) 之 檢測是否有網(wǎng)絡連接

點擊查看所參考的技術(shù)文章

利用單利+模型,來記錄當前網(wǎng)絡的具體狀態(tài).

如果工程里面是用的AFNetworking請求網(wǎng)絡數(shù)據(jù),可直接使用AFNetworkReachabilityManager.h來判斷網(wǎng)絡狀態(tài)。
使用AF請求網(wǎng)絡:
在AppDelegate.h里面添加類方法:

+(void)netWorkStatus;//獲取網(wǎng)絡狀態(tài)

在.m里面

import "AppDelegate.h"
import "ViewController.h"
import "AFNetworkReachabilityManager.h"http://af里面監(jiān)聽網(wǎng)絡狀態(tài)的類
import "FileManager.h"http://單利模型,用來記錄當前的網(wǎng)絡狀態(tài)

@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;
    //調(diào)用網(wǎng)絡狀態(tài)
    [AppDelegate netWorkStatus];
    return YES;
}

+(void)netWorkStatus
{
    /**
     AFNetworkReachabilityStatusUnknown          = -1,  // 未知
     AFNetworkReachabilityStatusNotReachable     = 0,   // 無連接
     AFNetworkReachabilityStatusReachableViaWWAN = 1,   // 3G 花錢
     AFNetworkReachabilityStatusReachableViaWiFi = 2,   // WiFi
     // 如果要檢測網(wǎng)絡狀態(tài)的變化,必須用檢測管理器的單例的startMonitoring
    [[AFNetworkReachabilityManager sharedManager] startMonitoring];
    // 檢測網(wǎng)絡連接的單例,網(wǎng)絡變化時的回調(diào)方法
    [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        //這是單利+模型,用來記錄網(wǎng)絡狀態(tài)
        FileManager *maa = [FileManager shareFileManager];
        maa.netState = status;
        //        NSLog(@"-----網(wǎng)絡狀態(tài)----%ld---%d", status,maa.netState);
    }];
}

創(chuàng)建一個.h文件命名為Singleton

//  Singleton.h
//  SingletonModel
//  Created by 琳小兮 on 15/5/21.
//  Copyright (c) 2015年 琳小兮. All rights reserved.
//
//因為方法名 shared"ClassName"是連在一起的,為了讓宏能夠正確替換掉簽名中的“ClassName”需要在前面加上 ##
//當宏的定義超過一行時,在末尾加上“\”表示下一行也在宏定義范圍內(nèi)。注意最后一行不需要加"\”。
//使用方法:(單利配合模型使用很方便)
//在.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;
}

然后創(chuàng)建模型,命名為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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,740評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,647評論 19 139
  • JAVA面試題 1、作用域public,private,protected,以及不寫時的區(qū)別答:區(qū)別如下:作用域 ...
    JA尐白閱讀 1,270評論 1 0
  • 單例:意思就是只有一個實例。單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例。這個類稱為單...
    CoderZS閱讀 644評論 1 13
  • 談論那些 談論不完的事 讓我疲倦極了
    長馬閱讀 265評論 0 2

友情鏈接更多精彩內(nèi)容