CFStreamCreateBoundPair 正在将 4kb 数据写入流,流将解析包含 xml 起始节点且不包含结束节点的数据。如何编写代码和管理代码,以便我们将正确的 xml 数据写入 nsoutputstream。
CFStreamCreateBoundPair(NULL, (CFReadStreamRef *)&iStream, (CFWriteStreamRef *)&oStream,4096);
CFStreamCreateBoundPair 正在将 4kb 数据写入流,流将解析包含 xml 起始节点且不包含结束节点的数据。如何编写代码和管理代码,以便我们将正确的 xml 数据写入 nsoutputstream。
CFStreamCreateBoundPair(NULL, (CFReadStreamRef *)&iStream, (CFWriteStreamRef *)&oStream,4096);
绑定流对的工作方式是,您可以将块写入写入流,而其他内容可以从读取流中读取块。您已transferBufferSize
在此处设置为 4096。这表明数据将以 4096 字节 (4K) 的块从写入流移动到读取流。如果您的源数据大于 4K 但长度小于 8K,那就可以解释为什么您只得到它的前 4K。例如,如果您的数据长 6K,那么前 4K 将被发送到读取流,然后下一个 2K 将排队,但我的理解是它会在缓冲区中等待,直到发生以下两种情况之一:
因此,如果 6K 是您要写入写入流的全部内容,那么您需要关闭写入流,CFWriteStreamClose(oStream);
以便将最后的 2K 发送到读取流。否则,我的期望是它会永远坐在那里。