私は ASIHTTPRequest が大好きで、それがなくなるのを見て悲しくなりました。しかし、ASI の開発者は正しかった。ASIHTTPRequest は非常に大きく肥大化しており、iOS やその他のフレームワークの最新の機能に匹敵するほどの時間を割くことができなかった. 先に進み、現在は AFNetworking を使用しています。
とはいえ、AFNetworking は ASIHTTP よりもはるかに不安定であり、私がそれを使用する目的のためには改良が必要であると言わざるを得ません。
画面に結果を表示する前に、100 個の HTTP ソースに対して HTTP 要求を行う必要があることがよくあります。AFHTTPNetworkOperation を操作キューに入れました。すべての結果がダウンロードされる前に、操作キュー内のすべての操作をキャンセルし、結果を保持するビュー コントローラーを閉じられるようにしたいと考えています。
それは常にうまくいくとは限りません。
AFNetworking では不定期にクラッシュしますが、ASIHTTPRequest ではこの操作は問題なく動作していました。AFNetworking の特定の部分がクラッシュしていると言えたらいいのにと思います。さまざまな時点でクラッシュし続けるからです (ただし、ほとんどの場合、デバッガーは NSURLConnection オブジェクトを作成する NSRunLoop を指しています)。したがって、AFNetworking が ASIHTTPRequest のように完全であると見なされるには、成熟する必要があります。
また、ASIHTTPRequests は、現時点で AFNetworking に欠けているクライアント認証をサポートしています。これを実装する唯一の方法は、AFHTTPRequestOperation をサブクラス化し、NSURLConnection の認証メソッドをオーバーライドすることです。ただし、NSURLConnection に関与し始めると、NSURLConnection を NSOperation ラッパー内に配置し、完了ブロックを記述することは、思ったほど難しくなく、何がサード パーティのライブラリをダンプしないのかを考え始めることに気付くでしょう。
ASI は、CFNetworking (C に基づく下位レベルの基盤フレームワーク) を使用してダウンロードとファイルのアップロードを可能にし、NSURLConnection を完全にスキップし、OS X および iOS 開発者のほとんどが恐れすぎて概念に触れないため、まったく異なるアプローチを使用します。このため、ファイルのアップロードとダウンロード、さらには Web ページのキャッシュが向上します。
どちらが好きですか?言うのが難しい。AFNetworking が十分に成熟すれば、ASI よりも好きになるでしょう。それまでは、ASI と、それが OS X と iOS で最もよく使われるフレームワークの 1 つになったことに感心せずにはいられませんでした。
編集:
この投稿の後、状況が少し変わったので、この回答を更新する時が来たと思います。
この投稿は少し前に書かれたもので、AFNetworking は十分に成熟しています。1 ~ 2 か月前、AF は、フレームワークに関する私の最後の不満である POST 操作の小さな更新を投稿しました (エコーネスト アップロードが AF で失敗したが、ASI で正常に完了した理由は、小さな行末の障害でした)。認証は AFnetworking では問題になりません。複雑な認証方法の場合、操作をサブクラス化して独自の呼び出しを行うことができ、AFHTTPClient により基本認証が容易になります。AFHTTPClient をサブクラス化することで、サービス コンシューマ全体を短時間で作成できます。
AFNetworking が提供する絶対に必要な UIImage の追加は言うまでもありません。ブロックとカスタム完了ブロック、およびいくつかの巧妙なアルゴリズムを使用すると、非同期の画像のダウンロードとセルの塗りつぶしを備えたテーブル ビューを非常に簡単に作成できますが、ASI では、帯域幅を調整するために操作キューを作成し、次のように操作キューをキャンセルして再開する必要がありました。テーブルビューの可視性など。そのような操作の開発時間は半分になりました。
成功と失敗のブロックも大好きです。ASI には完了ブロック (実際には NSOperation の完了ブロック) しかありません。完了時にエラーが発生したかどうかを確認し、それに応じて対処する必要がありました。複雑な Web サービスの場合、すべての「if」と「else」で迷子になる可能性があります。AFNetworking では、物事ははるかに単純で直感的です。
ASI は当時としては優れていましたが、AF を使用すると、Web サービスの処理方法を完全に変更して、スケーラブルなアプリケーションをより簡単に作成できます。iOS 3 以下をターゲットにしたい場合を除き、ASI に固執する理由はもうないと確信しています。