0

Cocoa では、2 つの NSThreads、1 つのプロデューサーと 1 つのコンシューマーをセットアップしました。プロデューサは NSMutableData にデータを追加し、レシーバはそのデータから NSInputStream を開き、チャンクを読み取ります。

プロデューサー スレッドは、コンシューマー プロセスよりもはるかに高速に書き込みますが、これは問題ありません。しかし、プロデューサーは限られた量の作業しか生成せず、終了します。コンシューマ スレッドが NSStreamEventEndEncountered イベントを処理するようにしたいと思います。NSInputStream が NSMutableData からのものである場合、これをどのように通知できますか?

ストリームの終わりを示す魔法の数字を含む一連のバイトをプロデューサーに送信させる必要がありますか?

4

1 に答える 1

1

プロデューサは NSMutableData にデータを追加し、レシーバはそのデータから NSInputStream を開き、チャンクを読み取ります。

それはうまくいきません。ドキュメントから:_-initWithData:

の内容dataがコピーされます。

つまり、その時点でデータ オブジェクトに含まれているものはすべてコピーされ、データを追加してもデータ オブジェクトの内容には従いません。

( も同様です+inputStreamWithData:。)

代わりにパイプを試してください。

于 2009-04-23T13:06:47.773 に答える