[解決済み] 複数の非同期NSURLConnection接続を管理する
2023-04-17 03:17:27
質問
私のクラスには、次のような繰り返しのコードがあります。
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
delegate:self];
非同期リクエストの問題は、さまざまなリクエストが発生し、それらをすべて1つのエンティティとして扱うためにデリゲートが割り当てられたとき、多くの分岐と醜いコードが形成され始めることです。
どのようなデータが返ってくるのか?
どのようなデータが返ってくるのか?これらの非同期リクエストにタグを付けることができれば、IDでビューをタグ付けできるのと同じように便利だと思います。
複数の非同期リクエストを処理するクラスを管理するために、どのような戦略が最も効率的であるかに興味がありました。
どのように解決するのですか?
私は、それに関連付けられた NSURLConnection によってキーが付けられた CFMutableDictionaryRef で応答を追跡しています。
connectionToInfoMapping =
CFDictionaryCreateMutable(
kCFAllocatorDefault,
0,
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
NSMutableDictionaryの代わりにこれを使うのは奇妙に思えるかもしれませんが、NSDictionaryがキーをコピーするのに対し、このCFDictionaryはキー(NSURLConnection)だけを保持するのでそうします(そしてNSURLConnectionはコピーをサポートしません)。
それが終わると
CFDictionaryAddValue(
connectionToInfoMapping,
connection,
[NSMutableDictionary
dictionaryWithObject:[NSMutableData data]
forKey:@"receivedData"]);
そして今、私は各接続のためのデータの "info" 辞書を持っていて、接続に関する情報を追跡するのに使用することができます。
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSMutableDictionary *connectionInfo =
CFDictionaryGetValue(connectionToInfoMapping, connection);
[[connectionInfo objectForKey:@"receivedData"] appendData:data];
}
関連
-
[解決済み] Objective-Cのクラス→文字列のようなものです。[NSArray className] -> @"NSArray" のようになります。
-
[解決済み] Objective-Cのプロテクトメソッド
-
[解決済み] NSNumberのインクリメント方法
-
[解決済み] UIButtonsの背景色を変更することはできますか?
-
[解決済み] Objective-Cでクラスのインスタンスを@protocolにキャストする
-
[解決済み] Swiftの変数はアトミックか?
-
[解決済み] MKMapViewのアノテーションをすべて削除する方法
-
[解決済み] iOS8 - 高さがゼロであることを示唆する曖昧な制約
-
[解決済み] hitTest:withEventを使用して、スーパービューのフレーム外にあるサブビューのタッチをキャプチャする。
-
[解決済み] writeToFile:atomically:はデータを上書きするのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] error: Writeable atomic property cannot pair with synthesized setter/getter and the user defined setter/getter.
-
[解決済み] iOSの合成されたプロパティの名前を、先頭のアンダースコアで変更するのはなぜですか?重複
-
[解決済み] カレントスレッドがメインスレッドであるかどうかをチェックする
-
[解決済み] NSDictionaryにboolean値を追加するにはどうすればよいですか?
-
[解決済み] Swift の外部読み取り専用、内部読み書き可能なプロパティ
-
[解決済み] NSNumberのインクリメント方法
-
[解決済み] 数字の後に "f "をつける
-
[解決済み] NSSetからNSMutableArrayを返す方法
-
[解決済み] Swiftの変数はアトミックか?
-
[解決済み] hitTest:withEventを使用して、スーパービューのフレーム外にあるサブビューのタッチをキャプチャする。