你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發——來改掉那些被禁用的方法吧(持續更新中)

iOS開發——來改掉那些被禁用的方法吧(持續更新中)

編輯:IOS開發綜合

iOS平台在快速的發展,各種接口正在不斷的更新。隨著iOS9的發布,又有一批老方法不推薦使用了,你若調用這些方法,運行的結果是沒有問題的,但是會出現警告“***is deprecated :first deprecated in iOS 9.0 - Use *******”.就像如圖所示:

 

在實際項目開發中,我們要秉承一個信念就是:要把每一個警告當做錯誤來處理,並解決每一個警告。你想想,你運行一個項目,就算運行成功了,但是出現幾十個、甚至幾百個黃黃的警告,心情是不是很糟糕呢?我將在這篇博客結合我的開發經驗,羅列出iOS9中不推薦使用的方法,並換成蘋果最新推薦的方式。本篇博客將會持續更新。

1.【彈出提示對話框】

在iOS9之前我們使用AlertView來彈出對話框,現在推薦使用AlertController,對於這個變化,請參考我的另一篇博客《iOS9使用提示框的正確實現方式》。

 

2.【stringByAddingPercentEncodingWithAllowedCharacters替換stringByAddingPercentEscapesUsingEncoding】

這個方法真的好長。。。我們使用這個方法來進行字符串編碼方式的更改。最常用的地方就是進行Http網絡請求的時候,發送的鏈接的參數中如果帶有中文,那麼首先就需要調用這個方法把編碼方式改為utf8,因為服務器端一般都使用utf8編碼。兩者實現的功能一樣。

 

//以下方法已經不推薦使用;
  //  NSString *urlStr = [@http://v.juhe.cn/weather/index?format=2&cityname=北京&key=88e194ce72b455563c3bed01d5f967c5stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

 //建議使用這個方法stringByAddingPercentEncodingWithAllowedCharacters,不推薦使用stringByAddingPercentEscapesUsingEncoding;
  NSString *urlStr2 = [@http://v.juhe.cn/weather/index?format=2&cityname=北京&key=88e194ce72b455563c3bed01d5f967c5 stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];


 

3.【NSURLSession替換NSURLConnection】

NSURLSession已經漸漸走上歷史舞台了。最近使用[NSURLConnection sendAsynchronousRequest]時已經警告為不推薦使用了,那我們就換成NSURLSession中的dataTaskWithRequest方法吧。

 

  //以下方法已經被禁用;
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
  
  [NSURLConnection
   sendAsynchronousRequest:urlRequest
   queue:queue
   completionHandler:^(NSURLResponse *response,
                       NSData *data,
                       NSError *error) {
     
     if ([data length] >0  &&
         error == nil){
       NSString *html = [[NSString alloc] initWithData:data
                                              encoding:NSUTF8StringEncoding];
       resault=[html copy];
       
       NSLog(@返回的服務器數據 = %@, html);
     }
     else if ([data length] == 0 &&
              error == nil){
       NSLog(@Nothing was downloaded.);
     }
     else if (error != nil){
       NSLog(@發生錯誤 = %@, error);
     }
     
   }];

  //推薦使用這種請求方法;
  NSURLSession *session = [NSURLSession sharedSession];
  
  __block  NSString *result = @;
  NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:urlRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    
    if (!error) {
      //沒有錯誤,返回正確;
      result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
      NSLog(@返回正確:%@,result);
      
    }else{
      //出現錯誤;
      NSLog(@錯誤信息:%@,error);
    }
    
  }];
  
  
  [dataTask resume];


 

 

 

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved