0

まず、iPad には接続を処理するための NIC (またはハードウェア) が 1 つしかないと思います。そのため、リクエストは順番にキューに入れられて処理され、同時に 2 つの接続が実行されることはありません。この推測は本当ですか?

UITabBar各タブのView Controllerが異なるJSONフィードURLをダウンロードして解析するコントローラーがあります。単一の URL からフィードをダウンロードし、それを解析して、作業が完了したときにビュー コントローラーの 1 つのデリゲート関数を呼び出すシングルトン クラスを作成しました。メインスレッドがハングアップしないように、非同期接続を使用することにしました。

URLConnection4Target * _conn = [[URLConnection4Target alloc] initWithRequest:request delegate:self startImmediately:NO];

したがって、タブはすべて同じウィンドウからアクセスでき (次々に移動するのではなく)、フィードごとに異なる URL を使用します。

私の問題は、シングルトン クラスで接続を設計して、その複数のビュー コントローラーを順次 (または可能であれば同時に) 処理する方法です。

ユーザーが1つのタブをクリックして、別のビューコントローラーから既にアクセス可能なオブジェクトにNSInvocationOperationアクセスするとどうなるかわからなかったので、使用しようとしました。NSURLConnection

4

1 に答える 1

0

まず、ネットワーク接続の数は、NIC (ネットワーク インターフェイス カード) やイーサネット ポートなどの数とは関係ありません。次に、URLConnection にシングルトン パターンを使用していることに言及しましたか? シングルトンが表示されない場合、これが一度に 1 つの接続しか開けないように見える理由だと思います。タブに必要な数の URLConnections を作成できますが、シングルトンに制限しないでください。URLConnection/request、N x requests/tab と考えれば問題ないはずです。

したがって、タブが表示/アクティブになっている場合は、コンテンツの URLRequest を作成し、bg で非同期に動作させますが、UI の更新がメイン スレッドにポストされるようにします。最後に、リクエストが完了したら、割り当てを解除して忘れます。

于 2013-01-14T16:30:44.877 に答える