AFNetworking 3.0 xバージョンの最新機能

5945 ワード

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.旧バージョンのSDKプロジェクトでAFNetworkingを使用したい場合は、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ブロックのパラメータも、AFHTTPRequestOperationではなくNSURLSessionTaskに変更される.
    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); }];

    UImitの移行


    画像ダウンロードは、AlamofireImageアーキテクチャと新しいAFImageDownloaderクラスに従うように再構築されています.このクラスの画像ダウンロードのエージェントはUIButtonとUIImageViewのクラスであり,必要に応じてカスタマイズできるいくつかの方法を提供している.カテゴリでは、リモートピクチャをダウンロードする実際の方法は変わりません.
    UIWebViewのクラスは、そのネットワーク要求としてAFHTTPSessionManagerを使用するように再構築される.

    UIalertViewのクラスは廃棄されました


    AFNetworking 3.0以降UIAlertViewのクラスは時代遅れで廃棄された.このライブラリではなく、アプリケーションが処理すべき論理であるため、UIAlertControllerクラスの計画は提供されていません.