//聯(lián)系人:石虎QQ: 1224614774昵稱:嗡嘛呢叭咪哄
一.前言
AFNetworking是一款在OS X和iOS下都令人喜愛的網(wǎng)絡(luò)庫衙吩。為了迎合iOS新版本的升級(jí), AFNetworking在3.0版本中刪除了基于 NSURLConnection API的所有支持。如果你的項(xiàng)目以前使用過這些API溪窒,建議您立即升級(jí)到基于 NSURLSession 的API的AFNetworking的版本坤塞。本指南將引導(dǎo)您完成這個(gè)過程。
本指南是為了引導(dǎo)使用AFNetworking 2.x升級(jí)到最新的版本API澈蚌,以達(dá)到過渡的目的摹芙,并且解釋了新增和更改的設(shè)計(jì)結(jié)構(gòu)。
新設(shè)備要求: 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在針對(duì)較舊版本的SDK項(xiàng)目盈电,請(qǐng)檢查README的兼容性信息。
NSURLConnection的API已廢棄
AFNetworking 1.0建立在NSURLConnection的基礎(chǔ)API之上 杯活,AFNetworking 2.0開始使用NSURLConnection的基礎(chǔ)API 匆帚,以及較新基于NSURLSession的API的選項(xiàng)。 AFNetworking 3.0現(xiàn)已完全基于NSURLSession的API旁钧,這降低了維護(hù)的負(fù)擔(dān)吸重,同時(shí)支持蘋果增強(qiáng)關(guān)于NSURLSession提供的任何額外功能互拾。由于Xcode 7中,NSURLConnection的API已經(jīng)正式被蘋果棄用嚎幸。雖然該API將繼續(xù)運(yùn)行颜矿,但將沒有新功能將被添加,并且蘋果已經(jīng)通知所有基于網(wǎng)絡(luò)的功能嫉晶,以充分使NSURLSession向前發(fā)展骑疆。
AFNetworking 2.X將繼續(xù)獲得關(guān)鍵的隱患和安全補(bǔ)丁,但沒有新的功能將被添加车遂。Alamofire(Swift下的網(wǎng)絡(luò)請(qǐng)求)軟件基金會(huì)建議封断,所有的項(xiàng)目遷移到基于NSURLSession的API。
棄用的類
下面的類已從AFNetworking 3.0中廢棄:
AFURLConnectionOperation
AFHTTPRequestOperation
AFHTTPRequestOperationManager
修改的類
下面的類包含基于NSURLConnection的API的內(nèi)部實(shí)現(xiàn)舶担。他們已經(jīng)被使用NSURLSession重構(gòu):
UIImageView+AFNetworking
UIWebView+AFNetworking
UIButton+AFNetworking
遷移
AFHTTPRequestOperationManager 核心代碼
如果你以前使用 AFHTTPRequestOperationManager 蹄溉, 你將需要遷移去使用 AFHTTPSessionManager毒姨。 以下的類在兩者過渡間并沒有變化:
securityPolicy
requestSerializer
responseSerializer
接下來舉一個(gè)關(guān)于AFHTTPSessionManager的簡(jiǎn)單例子。注意HTTP網(wǎng)絡(luò)請(qǐng)求返回的不再是AFHTTPRequestOperation, 修改成為了NSURLSessionTask落竹,并且成功和失敗的Block塊中的參數(shù)也變更為了NSURLSessionTask闸氮,而不再是AFHTTPRequestOperation剪况。
AFNetworking 2.x
詳情內(nèi)容鏈接: http://write.blog.csdn.net/postedit/75331456
6AFHTTPRequestOperationManager?*manager?=?[AFHTTPRequestOperationManager?manager];
[manager?GET:@"請(qǐng)求的url"parameters:nil?success:^(AFHTTPRequestOperation?*operation,?id?responseObject)?{
NSLog(@"成功");
}?failure:^(AFHTTPRequestOperation?*operation,?NSError*error)?{
NSLog(@"失敗");
}];
AFNetworking 3.0
6AFHTTPSessionManager?*session?=?[AFHTTPSessionManager?manager];
[session?GET:@"請(qǐng)求的url"parameters:nil?success:^(NSURLSessionDataTask?*task,?id?responseObject)?{
NSLog(@"成功");
}?failure:^(NSURLSessionDataTask?*task,?NSError?*error)?{
NSLog(@"失敗");
}];
AFHTTPRequestOperation 核心代碼
與NSURLConnection對(duì)象不同,每個(gè)共享應(yīng)用范圍的設(shè)置如會(huì)話管理蒲跨、緩存策略译断、Cookie存儲(chǔ)以及URL協(xié)議等,這些NSURLSession對(duì)象都可以單獨(dú)進(jìn)行配置或悲。使用特定的配置來初始化會(huì)話孙咪,它可以發(fā)送任務(wù)來獲取數(shù)據(jù),并上傳或下載文件巡语。
在AFNetworking 2.0中翎蹈,使用AFHTTPRequestOperation,有可能創(chuàng)建一個(gè)沒有額外開銷的獨(dú)立的網(wǎng)絡(luò)請(qǐng)求來獲取數(shù)據(jù)男公。NSURLSession則需要更多的開銷荤堪,為了獲得所要請(qǐng)求的數(shù)據(jù)。
接下來枢赔,將要通過AFHTTPSessionManager創(chuàng)建一個(gè)單例澄阳,并創(chuàng)建一個(gè)任務(wù)和啟動(dòng)它。
AFNetworking 2.x
10NSURL?*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
7NSURL?*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的遷移
圖片下載已經(jīng)被重構(gòu)踏拜,以遵循AlamofireImage架構(gòu)與新的AFImageDownloader類碎赢。這個(gè)類的圖片下載職責(zé)的代理人是UIButton與UIImageView的類目,并且提供了一些方法执隧,在必要時(shí)可以自定義揩抡。類別中户侥,下載遠(yuǎn)程圖片的實(shí)際方法沒有改變。
UIWebView的類目被重構(gòu)為使用AFHTTPSessionManager作為其網(wǎng)絡(luò)請(qǐng)求峦嗤。
UIAlertView的類目被廢棄
從AFNetworking 3.0后UIAlertView的類目因過時(shí)而被廢棄蕊唐。并沒有提供UIAlertController類目的計(jì)劃,因?yàn)檫@是應(yīng)用程序應(yīng)處理的邏輯烁设,而不是這個(gè)庫替梨。
謝謝!!!