2

CFStreamCreateBoundPairは4kbのデータをストリームに書き込んでおり、streamはxmlの開始ノードを含み、終了ノードを含まないデータを解析します。コードの記述方法とコードの管理方法により、正しいxmlデータをnsoutputstreamに書き込みます。

CFStreamCreateBoundPair(NULL、(CFReadStreamRef *)&iStream、(CFWriteStreamRef *)&oStream、4096);

4

1 に答える 1

2

バインドされたストリームのペアは、書き込みストリームにチャンクで書き込み、他の何かが読み取りストリームからチャンクで読み取ることができるように機能します。transferBufferSizeここでは 4096 に設定しました。これは、データが書き込みストリームから読み取りストリームに 4096 バイト (4K) 単位で移動されることを示します。ソース データの長さが 4K を超えているが 8K 未満の場合、最初の 4K しか取得していない理由が説明されます。たとえば、データの長さが 6K の場合、最初の 4K が読み取りストリームに送信され、次の 2K がキューに入れられますが、私の理解では、次の 2 つのいずれかが発生するまでバッファで待機します。

  1. 2 番目の 4K ブロックを完了するのに十分なデータが到着します。
  2. 書き込みストリームは閉じられています。

CFWriteStreamClose(oStream);したがって、書き込みストリームに書き込むのが 6K だけの場合は、最後の 2K を読み取りストリームに送信するために、書き込みストリームを閉じる必要があります。そうでなければ、私の期待は、それが永遠にそこにとどまるということです.

于 2013-02-06T14:02:45.683 に答える