1

NSStreamtelnetサーバーへの接続を確立するために使用するアプリケーションを作成しました。接続が確立したら、最初のコマンドを送信します。次にsleep(1);、アプリケーションを待機させるために使用します。次に、2番目のコマンドが送信されます。

問題は、GUI全体がの間にスタックすることsleep()です。それが「一時停止」を行う「完璧な」方法ではないことを私は知っており、これを適切に行う方法を学びたいと思います。良いことを聞いたNSTimerのですが、私の貧弱な使い方を単純に置き換えるために、具体的で「簡単な」使い方をしたいと思っていますsleep()

4

1 に答える 1

1

接続を確立するために使用しているプロシージャに、ある種のコールバックを登録できるはずです。何もせずに、コードでそのコールバックを待つだけです。

この場合、を使用して、実行ループでストリームNSStreamをスケジュールする必要があります。

[stream scheduleInRunLoop:[NSRunLoop currentRunLoop]
                  forMode:NSDefaultRunLoopMode];

実行ループは、アプリケーションのイベントを処理する構造です。を使用sleep()すると停止し、GUIは何もできなくなります。実行ループへの入力としてストリームを追加することにより、両方が引き続き機能できるようにします。

また、ストリームにレポートするものがある場合に通知を受信するデリゲートオブジェクト([stream setDelegate:self];たとえば)を設定する必要があります。そのデリゲートは実装する必要があります。これは、ストリームへの参照と何が起こったかを示すコードを使用して呼び出されます。stream:handleEvent:

于 2012-05-14T00:17:07.297 に答える