私はこのチュートリアルhttp://www.raywenderlich.com/3932/networking-tutorial-for-ios-how-to-create-a-socket-based-iphone-app-and-serverに従っていますが、すべてが機能していますわかりました、しかし、私が理解できないテキストに1行あります:
私たちのストリームは、継続的にデータを送受信する準備ができている必要があります。これを有効にするには、実行ループでイベントを受信するようにストリームをスケジュールする必要があります。実行ループを割り当てない場合、デリゲートはストリームに読み書きするデータがなくなるまでコードの実行をブロックしますが、これは避けたいケースです。
しかし、コードの行にコメントを付けると、次のようになります。
//[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
//[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
すべてがまだ正常に機能します。これをメインの実行ループでスケジュールする必要がある理由がよくわかりません。
私が見るように、メイン スレッドで発生するすべてのことは、この実行ループで処理されます。ボタンを押すと、メインの実行ループで処理されます。ここで、メインの実行ループでこれをスケジュールしない場合、バイトはまだ送受信されているため、メインの実行ループで処理されることを意味します。