AFNetworking 3.0遷移指南

AFNetworking 3.0

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將繼續(xù)運行踊挠,但將沒有新功能將被添加,并且蘋果已經通知所有基于網絡的功能冲杀,以充分使NSURLSession向前發(fā)展效床。

AFNetworking 2.X將繼續(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對象都可以單獨進行配置。使用特定的配置來初始化會話便贵,它可以發(fā)送任務來獲取數據菠镇,并上傳或下載文件。

在AFNetworking 2.0中承璃,使用AFHTTPRequestOperation利耍,有可能創(chuàng)建一個沒有額外開銷的獨立的網絡請求來獲取數據。NSURLSession則需要更多的開銷,為了獲得所要請求的數據隘梨。

接下來程癌,將要通過AFHTTPSessionManager創(chuàng)建一個對象,并創(chuàng)建一個任務和啟動它轴猎。

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類目的計劃,因為這是應用程序應處理的邏輯熊杨,而不是這個庫曙旭。

原文鏈接: AFNetworking 3.0
純屬個人翻譯,如有錯誤晶府,還請糾正桂躏。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市川陆,隨后出現的幾起案子剂习,更是在濱河造成了極大的恐慌,老刑警劉巖较沪,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鳞绕,死亡現場離奇詭異,居然都是意外死亡尸曼,警方通過查閱死者的電腦和手機们何,發(fā)現死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來控轿,“玉大人冤竹,你說我怎么就攤上這事〔缟洌” “怎么了鹦蠕?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長在抛。 經常有香客問我钟病,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任档悠,我火速辦了婚禮廊鸥,結果婚禮上,老公的妹妹穿的比我還像新娘辖所。我一直安慰自己惰说,他們只是感情好,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布缘回。 她就那樣靜靜地躺著吆视,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酥宴。 梳的紋絲不亂的頭發(fā)上啦吧,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機與錄音拙寡,去河邊找鬼授滓。 笑死,一個胖子當著我的面吹牛肆糕,可吹牛的內容都是我干的般堆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼诚啃,長吁一口氣:“原來是場噩夢啊……” “哼淮摔!你這毒婦竟也來了?” 一聲冷哼從身側響起始赎,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤和橙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后造垛,有當地人在樹林里發(fā)現了一具尸體魔招,經...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年筋搏,在試婚紗的時候發(fā)現自己被綠了仆百。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡奔脐,死狀恐怖俄周,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情髓迎,我是刑警寧澤峦朗,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站排龄,受9級特大地震影響波势,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一尺铣、第九天 我趴在偏房一處隱蔽的房頂上張望拴曲。 院中可真熱鬧,春花似錦凛忿、人聲如沸澈灼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叁熔。三九已至,卻和暖如春床牧,著一層夾襖步出監(jiān)牢的瞬間荣回,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工戈咳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留心软,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓除秀,卻偏偏與公主長得像糯累,于是被迫代替她去往敵國和親算利。 傳聞我的和親對象是個殘疾皇子册踩,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內容