3

私はこのチュートリアル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];

すべてがまだ正常に機能します。これをメインの実行ループでスケジュールする必要がある理由がよくわかりません。

私が見るように、メイン スレッドで発生するすべてのことは、この実行ループで処理されます。ボタンを押すと、メインの実行ループで処理されます。ここで、メインの実行ループでこれをスケジュールしない場合、バイトはまだ送受信されているため、メインの実行ループで処理されることを意味します。

4

1 に答える 1