AFNetworking3.X移行ガイド



Afnetworking 3 X Migration Guide



AFNetworking 3.0

AFNetworkingは、OSXと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を正式にサポートしています。古いバージョンのSDKプロジェクトでAFNetworkingを使用する場合は、以下を確認してください。 README 互換性情報。

NSURLConnectionAPIは非推奨になりました

AFNetworking 1.0は、NSURLConnectionの基盤となるAPIに基づいて構築されています。これは、NSURLConnectionの基本APIと新しいNSURLSessionベースのAPIから始まります。 AFNetworking3.0はNSURLSessionAPIに完全に基づいているため、メンテナンスの負担が軽減され、NSURLSessionによって提供される追加機能に対するAppleの拡張機能がサポートされます。 Xcode 7により、NSURLConnectionAPIはAppleによって正式に非推奨になりました。 APIは引き続き実行されますが、新しい機能は追加されません。Appleは、NSURLSessionを完全に進めるようにすべてのネットワークベースの機能に通知しました。



AFNetworking 2.Xは引き続き重大な危険とセキュリティパッチを受け取りますが、新しい機能は追加されません。 Alamofire(Swiftでのネットワークリクエスト)Software Foundationは、すべてのプロジェクトをNSURLSessionベースのAPIに移行することを推奨しています。

非推奨のクラス

次のクラスはAFNetworking3.0から非推奨になりました。

  • AFURLConnectionOperation
  • AFHTTPRequestOperation
  • AFHTTPRequestOperationManager

変更されたクラス

次のクラスには、NSURLConnectionベースのAPIの内部実装が含まれています。これらはNSURLSessionを使用してリファクタリングされています。



  • UIImageView + AFNetworking
  • UIWebView + AFNetworking
  • UIButton + AFNetworking

移行する


AFHTTPRequestOperationManagerコアコード

以前に使用したことがある場合 AFHTTPRequestOperationManager 、使用するには移行する必要があります AFHTTPSessionManager 。次のクラスは、トランジション間で変更されていません。

  • セキュリティポリシー
  • requestSerializer
  • responseSerializer

AFHTTPSessionManagerの簡単な例を見てみましょう。 注意 HTTPネットワーク要求はAFHTTPRequestOperationを返さなくなり、変更はNSURLSessionTaskになり、成功および失敗したブロックブロックのパラメーターもAFHTTPRequestOperationではなくNSURLSessionTaskに変更されます。

AFNetworking 2.x

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager] [manager GET: @'Requested url' parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog (@'success') } failure:^(AFHTTPRequestOperation *operation, NSError*error) { NSLog (@'failed') }]

AFNetworking 3.0

AFHTTPSessionManager *session = [AFHTTPSessionManager manager] [session GET:@'Requested url' parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) { NSLog (@'success') } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog (@'failed') }]

AFHTTPRequestOperationコアコード

NSURLConnectionオブジェクトとは異なり、セッション管理、キャッシュポリシー、Cookieストレージ、URLプロトコルなどの共有アプリケーションスコープの各設定は個別に構成できます。データを取得し、ファイルをアップロードまたはダウンロードするタスクを送信できる特定の構成でセッションを初期化します。

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の移行

画像のダウンロードは、新しいAFImageDownloaderクラスでAlamofireImageアーキテクチャに従うようにリファクタリングされました。このクラスの画像ダウンロード責任の委任者は、UIButtonとUIImageViewのカテゴリであり、必要に応じてカスタマイズできるメソッドを提供します。このカテゴリでは、リモートイメージをダウンロードする実際の方法は変更されていません。

UIWebViewクラスは、ネットワーク要求としてAFHTTPSessionManagerを使用するようにリファクタリングされました。

UIAlertViewのクラスは非推奨です

AFNetworking 3.0以降のUIAlertViewのカテゴリは、廃止されたために廃止されました。 UIAlertControllerクラスを提供する予定はありません。これは、ライブラリではなく、アプリケーションが処理する必要のあるロジックであるためです。



OF:朝の薄明が落ちる
リンク:https://www.jianshu.com/p/047463a7ce9b
出典:ショートブック
本の著作権は著者が所有しています。いかなる形式の転載も、承認と出典について著者が連絡する必要があります。