代码之家  ›  专栏  ›  技术社区  ›  Hans Sjunnesson

如何在从nsmutabledata读取nsinputstream时向nsstreameventendendencounted发出信号

  •  0
  • Hans Sjunnesson  · 技术社区  · 15 年前

    在Cocoa,我设置了两个nsthreads,一个生产者和一个消费者。 生产者将数据附加到NSmutableData,而接收者从该数据中打开一个NSinputstream,并读取数据块。

    生产者线程的写入速度比消费者进程快得多,这是可以的。但生产商只生产有限数量的工作,然后退出。我想让消费者线程处理nsstreamEventEndEncounted事件。当nsinputstream来自一个nsmutabledata时,我如何发出这个信号?

    我应该让制作人发送一系列带有表示流结束的神奇数字的字节吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Peter Hosey    15 年前

    生产者将数据附加到NSmutableData,而接收者从该数据中打开一个NSinputstream,并读取数据块。

    那不行。从 the -initWithData: documentation :

    内容 data 被复制。

    也就是说,它将复制出当时数据对象中的任何内容,而不是在向数据对象添加更多数据时跟踪数据对象的内容。

    (同样适用于 +inputStreamWithData: )

    试一试 pipe 相反。