2011-10-28 38 views
4

如何同步调用NSStream以获取结果?如何同步调用NSStream

目前我公司在其委托方法

`(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent`- 
+0

为什么你想要同步获取流数据? – TheEye

回答

7

NSStream一个得到一个异步回调是一个抽象类,无论是读取或向流写入数据。要实际访问数据,您需要一个具体的子类,如NSInputStreamNSOutputStream(或您的自定义子类NSStream)。要读取NSInputStream调用read:maxLength:中的数据。您可能需要轮询流,询问是否有新数据可用,请致电hasBytesAvailable。一个NSOutputStream类似于write:maxLength:hasSpaceAvailable方法。

您受到iOS文档的高度鼓励以避免轮询,并使用运行循环调度来代替通过响应异步回调委托方法。

+1

如果您在单独的线程中运行,则不需要轮询。您只能从输入流中读取数据,它将阻塞,直到数据可用/数据流关闭/发生错误。响应模拟posix行为,其中0表示流关闭,-1表示发生错误。正数表示从流中读取的实际字节数。 – JugsteR