0

对 NSOutputStream 的两次写入是否会在 stream:handleEvent: 中产生两个 NSStreamEventHasBytesAvailable(我在其中处理读取的数据)?

4

1 回答 1

0

您是否查看过有关输出流的“流编程指南”?https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Streams/Articles/WritingOutputStreams.html

在输出流上,序列为:

  1. 分配/初始化
  2. 设置委托
  3. 在运行循环中调度
  4. 打开
  5. 等待 NSStreamEventOpenCompleted
  6. 等待 NSStreamEventHasSpaceAvailable

当收到 NSStreamEventHasSpaceAvailable 时(每次写入操作只会收到一次),您可以选择执行写入。如果执行写入,则需要等待接收 NSStreamEventHasSpaceAvailable 才能再次写入。执行写入时,您还必须确认您尝试写入的所有内容均已实际写入。如果写入尝试仅部分完成,则可能需要处理部分写入。

于 2013-03-05T18:36:03.773 回答