iOS之AFN簡介(1)

來源:互聯網
上載者:User

標籤:

AFN的簡單介紹

AFNetworking是一款在OS X和iOS下都令人喜愛的網路程式庫。

為了迎合iOS新版本的升級, AFNetworking在3.0版本中刪除了基於 NSURLConnection API的所有支援。

如果你的項目以前使用過這些API,建議您立即升級到基於 NSURLSession 的API的AFNetworking的版本。本指南將引導您完成這個過程。

 

本章是為了引導使用AFNetworking 2.x升級到最新的版本API,以達到過渡的目的,並且解釋了新增和更改的設計結構。

 

新裝置要求: iOS 7, Mac OS X 10.9, watchOS 2, tvOS 9, & Xcode 7

 

AFNetworking 3.0正式支援的iOS 7, Mac OS X的10.9, watchOS 2 , tvOS 9 和Xcode 7。如果你想使用AFNetworking在針對較舊版本的SDK項目,請檢查README的相容性資訊。

 

NSURLConnection的API已廢棄

 

AFNetworking 1.0建立在NSURLConnection的基礎API之上 ,AFNetworking 2.0開始使用NSURLConnection的基礎API ,以及較新基於NSURLSession的API的選項。 AFNetworking 3.0現已完全基於NSURLSession的API,這降低了維護的負擔,同時支援蘋果增強關於NSURLSession提供的任何額外功能。由於Xcode 7中,NSURLConnection的API已經正式被蘋果棄用。雖然該API將繼續運行,但將沒有新功能將被添加,並且蘋果已經通知所有基於網路的功能,以充分使NSURLSession向前發展。

 

AFNetworking 2.X將繼續獲得關鍵的隱患和安全補丁,但沒有新的功能將被添加。Alamofire(Swift下的網路請求)軟體基金會建議,所有的項目遷移到基於NSURLSession的API。

 

棄用的類

 

下面的類已從AFNetworking 3.0中廢棄:

 

AFURLConnectionOperation

AFHTTPRequestOperation

AFHTTPRequestOperationManager

修改的類

 

下面的類包含基於NSURLConnection的API的內部實現。他們已經被使用NSURLSession重構:

 

UIImageView+AFNetworking

UIWebView+AFNetworking

UIButton+AFNetworking

遷移

 

AFHTTPRequestOperationManager 核心代碼

 

如果你以前使用 AFHTTPRequestOperationManager , 你將需要遷移去使用 AFHTTPSessionManager。 以下的類在兩者過渡間並沒有變化:

 

securityPolicy

requestSerializer

responseSerializer

接下來舉一個關於AFHTTPSessionManager的簡單例子。注意HTTP網路請求返回的不再是AFHTTPRequestOperation, 修改成為了NSURLSessionTask,並且成功和失敗的Block塊中的參數也變更為了NSURLSessionTask,而不再是AFHTTPRequestOperation。

 

AFNetworking 2.x

 

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

[manager GET:@"請求的url" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

        NSLog(@"成功");

} failure:^(AFHTTPRequestOperation *operation, NSError*error) {

        NSLog(@"失敗");

}];

AFNetworking 3.0

 

AFHTTPSessionManager *session = [AFHTTPSessionManager manager];

[session GET:@"請求的url" parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {

        NSLog(@"成功");

} failure:^(NSURLSessionDataTask *task, NSError *error) {

        NSLog(@"失敗");

}];

AFHTTPRequestOperation 核心代碼

 

與NSURLConnection對象不同,每個共用應用範圍的設定如會話管理、緩衝策略、Cookie儲存以及URL協議等,這些NSURLSession對象都可以單獨進行配置。使用特定的配置來初始化會話,它可以發送任務來擷取資料,並上傳或下載檔案。

 

在AFNetworking 2.0中,使用AFHTTPRequestOperation,有可能建立一個沒有額外開銷的獨立的網路請求來擷取資料。NSURLSession則需要更多的開銷,為了獲得所要請求的資料。

 

接下來,將要通過AFHTTPSessionManager建立一個單例,並建立一個任務和啟動它。

 

AFNetworking 2.x

 

NSURL *URL = [NSURL URLWithString:@""];

NSURLRequest *request = [NSURLRequest requestWithURL:URL];

AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];

op.responseSerializer = [AFJSONResponseSerializer serializer];

[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

        NSLog(@"JSON: %@", responseObject);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        NSLog(@"Error: %@", error);

}];

[[NSOperationQueue mainQueue] addOperation:op];

AFNetworking 3.0

 

NSURL *URL = [NSURL URLWithString:@""];

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

[manager GET:URL.absoluteString parameters:nil success:^(NSURLSessionTask *task, id responseObject) {

        NSLog(@"JSON: %@", responseObject);

} failure:^(NSURLSessionTask *operation, NSError *error) {

        NSLog(@"Error: %@", error);

}];

UIKit的遷移

 

圖片下載已經被重構,以遵循AlamofireImage架構與新的AFImageDownloader類。這個類的圖片下載職責的代理人是UIButton與UIImageView的類目,並且提供了一些方法,在必要時可以自訂。類別中,下載遠程圖片的實際方法沒有改變。

 

UIWebView的類目被重構為使用AFHTTPSessionManager作為其網路請求。

 

UIAlertView的類目被廢棄

 

從AFNetworking 3.0後UIAlertView的類目因過時而被廢棄。並沒有提供UIAlertController類目的計劃,因為這是應用程式應處理的邏輯,而不是這個庫。

 

`

 

iOS之AFN簡介(1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.