AFNetworking 3.0迁移指南
本指南是為了引導使用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
| 1 2 3 4 5 6 | AFHTTPRequestOperationManager?*manager?=?[AFHTTPRequestOperationManager?manager]; [manager?GET:@"請求的url"?parameters:nil?success:^(AFHTTPRequestOperation?*operation,?id?responseObject)?{ ????????NSLog(@"成功"); }?failure:^(AFHTTPRequestOperation?*operation,?NSError*error)?{ ????????NSLog(@"失敗"); }]; |
AFNetworking 3.0
| 1 2 3 4 5 6 | 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
| 1 2 3 4 5 6 7 8 9 10 | 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
| 1 2 3 4 5 6 7 | 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
轉載自:http://www.cocoachina.com/ios/20151022/13831.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的AFNetworking 3.0迁移指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring的@Scheduled 动态
- 下一篇: [python]---从java到pyt