1

ネットワーク経由で相互に接続されているデバイス間で2 つがNSInputStreamあります。NSOutputStreamに何かを書き込むと、イベントが発生するoutput streamまでデータが書き込まれ ます。NSStreamEventEndEncountered出力ストリームを閉じますが、反対側 ( input stream) ではNSStreamEventEndEncountered、 のビュー コントローラーを終了するまで、イベントは発生しませんoutput stream。1.で同じことが発生した後でも、 でイベントが発生
しないのはなぜですか? (このイベントでは、出力ストリームも閉じられます) 2. を一度開くと、データを書き込むことができるのは 1 回だけであると理解しています。イベント後に再度開くことはできません (たとえば、イベントに何か新しいものを書き込むため)。NSStreamEventEndEncounteredinput streamoutput stream
NSOutputStreamoutput streamNSStreamEventEndEncountered

4

1 に答える 1

3

あなたの接続とデータの送信方法についてもっと情報が必要かもしれませんが、あなたの質問に答えさせてください:

1.

あなたはinputstreamそれから読み始めたことがないので、あなたはあなたの終わりに遭遇していません. あなたoutputstreamが言ったように、おそらく終わりに遭遇したので、書き終えました。

ジェイコブ (あなたのoutputstream) が友人の家に封筒 (あなたのデータ) を届けていると想像してください。ジェイコブは友人の玄関マットに封筒を置き、自分の家に戻ります。この時点で、ジェイコブの仕事は終わったので、彼は自分が終わったことを自分自身に言い聞かせます(あなたの場合、outputstream信号は anNSStreamEventEndEncounteredです)。

ジェイコブの友人であるジョージ (あなたのinputstream) は、封筒を見ることも、見ることもできませんでした。したがって、ジョージが封筒を取り、その中身を見ない限り、彼はそれを見終わったことを自分自身に決して伝えることができませんでした(あなたの場合、 は を決して通知しinputstreamませんNSStreamEventEndEncountered)。

2.

これは実際には、をどのように使用する予定かによって異なりますoutputstream。同じデバイスにデータを複数回送信する予定がある場合は、outputstreamオープンのままにしてみませんか? ソケットが開いていて、使用可能なスペースがある限り、データを書き込むことができます。ただし、を閉じると、outputstream再度開く必要があります。

于 2013-10-11T14:20:35.427 に答える