NSStreamを同期的に呼び出す方法

NSStreamを同期して呼び出して結果を得る方法は?

現在、デリゲートメソッドの1つで非同期コールバックを取得しています

 `(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent`- 
4
なぜデータを同期してストリーミングしたいのですか?
追加された 著者 TheEye,

1 答え

NSStream はストリームにデータを読み書きしない抽象クラスです。実際にデータにアクセスするには、 NSInputStreamNSOutputStream (または NSStream のカスタムサブクラス)などの具象サブクラスが必要です。 NSInputStream でデータを読み込むには、 read:maxLength:を呼び出します。新しいデータが利用可能かどうかを hasBytesAvailable で確認して、ストリームをポーリングしたいと思うでしょう。 NSOutputStreamには、同様の write:maxLength:および hasSpaceAvailable メソッドがあります。

ポーリングを避けるためにiOSのドキュメントで強くお勧めします。代わりに非同期コールバックデリゲートメソッドに応答して実行ループスケジューリングを使用してください。

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