このトピックにはさまざまな質問があり、dispatch_async 内で sendSynchronousRequest を使用しないようにというアドバイスがたくさんあります。これは、スレッドをブロックし、GCD がすべての同期 URL 要求を処理するために多くの新しいワーカー スレッドを生成するためです。
iOS 5 の [NSURLConnection sendAsynchronousRequest:queue:completionHandler:] が舞台裏で何をしているのかについて、誰も決定的な答えを持っていないようです。
私が読んだある投稿では、最適化する可能性があり、実行ループを使用する可能性があると述べていますが、リクエストごとに新しいスレッドを作成することはありません。
sendAsynchronousRequest:queue:completionHandler を使用しているときにデバッガーを一時停止すると、スタック トレースは次のようになります。
.. sendAsynchronousRequest:queue:completionHandler が実際に sendSynchronousRequest を呼び出しているように見えますが、sync メソッドの代わりに async メソッドを使用すると、まだ大量のスレッドが作成されています。
はい、非同期呼び出しを使用する利点は他にもありますが、この投稿では説明しません。
私が興味を持っているのは、パフォーマンス/スレッド/システムの使用法だけです。さらに悪い場合は、非同期呼び出しを使用する代わりに、dispatch_async 内で同期呼び出しを使用します。
ios4 非同期呼び出しの使用に関するアドバイスも必要ありません。これは純粋に教育目的のためです。
誰かがこれに対する洞察に満ちた答えを持っていますか?
ありがとう