一:确认网络环境3G/WIFI 
 
    1. 添加源    switch ([r currentReachabilityStatus])

   { 

            case NotReachable: 
                    // 没有网络连接 
                    break; 
            case ReachableViaWWAN: 
                    // 使用3G网络 
                    break; 
            case ReachableViaWiFi: 
                    // 使用WiFi网络 
                    break; 
    } 
     
    3.检查当前网络环境 
    程序启动时,如果想检测可用的网络环境,可以像这样 
    // 是否wifi 

    + (BOOL) IsEnableWIFI 

    { 

        return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus]  !=  NotReachable); 
    } 
 
    // 是否3G 

    + (BOOL) IsEnable3G

     { 

        return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus]  !=  NotReachable); 

    } 


    例子: 

    - (void)viewWillAppear:(BOOL)animated 

   {     

    if (([Reachability reachabilityForInternetConnection].currentReachabilityStatus == NotReachable) &&  

            ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == NotReachable)) 

        { 

            self.navigationItem.hidesBackButton = YES; 
            [self.navigationItem setLeftBarButtonItem:nil animated:NO]; 
        } 
    } 
 
    4. 链接状态的实时    - (void)updateStatus

     { 

        self.remoteHostStatus = [[Reachability sharedReachability] remoteHostStatus]; 
    } 
 
    // 通知网络状态 
    - (void)reachabilityChanged:(NSNotification *)note { 
        [self updateStatus]; 
        if (self.remoteHostStatus == NotReachable) { 
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"AppName", nil) 
                         message:NSLocalizedString (@"NotReachable", nil) 
                        delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
            [alert show]; 
            [alert release]; 
        } 
    } 
 
    // 程序启动器,启动网络监视 
    - (void)applicationDidFinishLaunching:(UIApplication *)application { 
     
        // 设置网络检测的站点 
        [[Reachability sharedReachability] setHostName:@"www.apple.com"]; 
        [[Reachability sharedReachability] setNetworkStatusNotificationsEnabled:YES]; 
        // 设置网络状态变化时的通知函数 
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) 
                                                 name:@"kNetworkReachabilityChangedNotification" object:nil]; 
        [self updateStatus]; 
    } 
 
    - (void)dealloc { 
        // 删除通知对象 
        [[NSNotificationCenter defaultCenter] removeObserver:self]; 
        [window release]; 
        [super dealloc]; 
    }  
     
    Reachability 2.0版本 
     
 
    // MyAppDelegate.h 
    @class Reachability; 
 
        @interface MyAppDelegate : NSObject <UIApplicationDelegate> { 
            Reachability  *hostReach; 
        } 
 
    @end 
 
    // MyAppDelegate.m 
    - (void)reachabilityChanged:(NSNotification *)note { 
        Reachability* curReach = [note object]; 
        NSParameterAssert([curReach isKindOfClass: [Reachability class]]); 
        NetworkStatus status = [curReach currentReachabilityStatus]; 
     
        if (status == NotReachable) { 
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"AppName"" 
                              message:@"NotReachable" 
                              delegate:nil 
                              cancelButtonTitle:@"YES" otherButtonTitles:nil]; 
                              [alert show]; 
                              [alert release]; 
        } 
    } 
                               

    - (void)applicationDidFinishLaunching:(UIApplication *)application

   { 

        // ... 
                   
        // 监测网络情况 
        [[NSNotificationCenter defaultCenter] addObserver:self 
                              selector:@selector(reachabilityChanged:) 
                              name: kReachabilityChangedNotification 
                              object: nil]; 
        hostReach = [[Reachability reachabilityWithHostName:@"www.google.com"]  retain]; 
        [hostReach startNotifier]; 
        // ... 
    } 
 
 
二:使用NSConnection下载数据 
     
    1.创建NSConnection对象,设置委托对象 
     
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[self urlString]]]; 
    [NSURLConnection connectionWithRequest:request delegate:self]; 
     
    2. NSURLConnection delegate委托方法 
        - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;   
        - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;   
        - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;   
        - (void)connectionDidFinishLoading:(NSURLConnection *)connection;   
 
    3. 实现委托方法 
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 
        // store data 
        [self.receivedData setLength:0];            //通常在这里先清空接受数据的缓存 
    } 
     
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
           /* appends the new data to the received data */ 
        [self.receivedData appendData:data];        //可能多次收到数据,把新的数据添加在现有数据最后 
    } 
 
    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { 
        //  

相关文章:

  • 2021-08-08
  • 2022-01-21
  • 2022-01-12
  • 2021-08-15
  • 2022-03-07
  • 2021-07-28
  • 2021-05-27
  • 2022-02-07
猜你喜欢
  • 2021-10-05
  • 2022-01-07
  • 2021-12-05
  • 2021-08-04
  • 2021-04-19
  • 2021-06-24
相关资源
相似解决方案