Iphone 如何同步调用NSStream

Iphone 如何同步调用NSStream,iphone,objective-c,asynchronous,ftp,nsstream,Iphone,Objective C,Asynchronous,Ftp,Nsstream,如何同步调用NSStream以获得结果 目前,我在它的一个委托方法中得到了一个异步回调 `(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent`- NSStream是一个抽象类,既不向流读取数据,也不向流写入数据。要实际访问数据,您需要一个具体的子类,如NSInputStream或NSOutputStream(或nstream的自定义子类)。要读取NSInputStream中的数据,请调用read

如何同步调用NSStream以获得结果

目前,我在它的一个委托方法中得到了一个异步回调

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

NSStream
是一个抽象类,既不向流读取数据,也不向流写入数据。要实际访问数据,您需要一个具体的子类,如
NSInputStream
NSOutputStream
(或
nstream
的自定义子类)。要读取
NSInputStream
中的数据,请调用
read:maxLength:
。您可能希望使用
hasBytesAvailable
轮询流,询问它是否有任何新数据可用。NSOutputStream具有类似的
write:maxLength:
hasSpaceAvailable
方法


iOS文档强烈建议您避免轮询,而是通过响应异步回调委托方法来使用运行循环调度。

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