同期要求または非同期要求を送信するのが最適ですか?ベストプラクティス:NSURLConnection sendSynchronousRequestとsendAsynchronousRequest
私は、ユーザーに選択したいファイルのリストを要求するサーバーに要求を送信しています。
同期要求または非同期要求を送信するのが最適ですか?ベストプラクティス:NSURLConnection sendSynchronousRequestとsendAsynchronousRequest
私は、ユーザーに選択したいファイルのリストを要求するサーバーに要求を送信しています。
同期要求は、アプリケーションが完了するまで、メインスレッドで実行されるため、アプリケーションをユーザーの操作から停止します。
他のスレッドでは実行されません。
非同期要求は、呼び出し元のスレッドをブロックしないため、常に使用する必要があります。代わりに、接続が失敗するか、成功すると、デリゲートメソッドを呼び出します。接続の実行中にユーザーが何もしないようにする必要がある場合は、MBProgressHUD(githubをチェック)のようなHUDクラスを使用します。
メインスレッドから呼び出しているときに非同期呼び出しを使用したいとします。そうしないと、サーバが応答するまで、ユーザインタフェース全体が応答しなくなる(フリーズする)。 (メインスレッドによって維持されるユーザインタフェース)。
別のスレッドから呼び出しているときに同期呼び出しを使用し、応答があるまで待機してから続行したい場合は、続行します。手動でスレッドを作成した場合、この新しいスレッドから非同期を呼び出すと、3番目のスレッドが作成されます。
非同期とは、「呼び出し元」がタスクが完了するまで待機しないことを意味します。
同期要求は、呼び出しが行われたスレッドで実行されます。バックグラウンドスレッドから同期要求を行うと、バックグラウンドスレッドは要求が終了するまでブロックされますが、メインスレッドはブロックされません。 – gnasher729