質問: NSStreamを同期的に呼び出す方法 NSStreamを同期して呼び出して結果を得る方法は? 現在、デリゲートメソッドの1つで非同期コールバックを取得しています ``` `(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent`- ```
回答: `NSStream` はストリームにデータを読み書きしない抽象クラスです。実際にデータにアクセスするには、 `NSInputStream` や `NSOutputStream` (または `NSStream` のカスタムサブクラス)などの具象サブクラスが必要です。 `NSInputStream` でデータを読み込むには、 `read:maxLength:`を呼び出します。新しいデータが利用可能かどうかを `hasBytesAvailable` で確認して、ストリームをポーリングしたいと思うでしょう。 NSOutputStreamには、同様の `write:maxLength:`および `hasSpaceAvailable` メソッドがあります。 ポーリングを避けるためにiOSのドキュメントで強くお勧めします。代わりに非同期コールバックデリゲートメソッドに応答して実行ループスケジューリングを使用してください。