2011-10-28 9 views
4

結果を得るためにNSStreamを同期的に呼び出す方法は?現在、私はそのデリゲートメソッドの1NSStreamを同期的に呼び出す方法

`(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent`- 
+0

なぜデータを同期して取得したいのですか? – TheEye

答えて

7

に戻っNSStreamを非同期呼び出しを取得しています

は読まないまたはストリームにデータを書き込むどちらもという抽象クラスです。実際にデータにアクセスするには、NSInputStreamまたはNSOutputStream(またはカスタムサブクラスNSStream)などの具象サブクラスが必要です。 NSInputStreamread:maxLength:でデータを読む。ストリームをポーリングして、新しいデータがあるかどうかを尋ねて、hasBytesAvailableとします。 NSOutputStreamには、write:maxLength:hasSpaceAvailableのメソッドがあります。

ポスティングを避け、代わりに非同期コールバックデリゲートメソッドに応答して実行ループスケジューリングを使用することを強くお勧めします。

+1

別のスレッドで実行している場合は、ポーリングする必要はありません。入力ストリームから読み込むだけで、データが利用可能になるまでブロックされます。ストリームは閉じられ、エラーが発生します。レスポンスはposixの動作をエミュレートします.0はストリームが閉じられたことを意味し、-1はエラーが発生したことを意味します。正の数は、ストリームから読み取られた実際のバイトを意味します。 – JugsteR

関連する問題